SpringBoot下使用Shiro+Freemaker报错:org.apache.shiro.UnavailableSecurityManagerException

3,784次阅读
一条评论

前言

今天在日常敲代码中,给 SpringBoot 自定义错误页,但是本来一件简单的事情却变得复杂起来了,页面总是空白的而且没有输出,后面新建了一个项目,但是在新项目中一切都是 OK 的,于是我进行一步步的对比调试,最终确定了是 Shiro 的 FreeMarker Tag 出的错导致页面渲染终止。SpringBoot

解决办法

在 shiro 的配置文件中添加如下的配置 bean:

@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean(SecurityManager securityManager){MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean();
    bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager");
    bean.setArguments(securityManager);
    return bean;
}
要注意的是在这之前你要有配置 SecurityManager 的 bean,其上述代码的作用就当于调用 SecurityUtils.setSecurityManager(securityManager)

然后完成上述步骤之后,就可以愉快的使用 shiro tag 了,比如:

<@shiro.user>
   <a class="item dis-in" href="/account/home.html"> 欢迎您,<@shiro.principal/></a>
</@shiro.user>
<@shiro.guest>
   <a class="item dis-in" href="/account/sign-in.html"> 登录 / 注册 </a>
</@shiro.guest>
1
憧憬Licoy
版权声明:本站原创文章,由 憧憬Licoy2018-03-18发表,共计781字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
验证码
载入中...
广州网站建设 评论达人 LV.2
2018-09-10 10:46:48 回复

每日签到,生活更精彩 ~:2018-09-10 10:46:55

WindowsWindowsChromeChrome48.0.2564.116