在我解释这个问题之前,我应该说我们只需要Apache Shiro进行授权,并且已经启用了OAuth2的身份验证。
因此,启用Shiro的代码与此link here中的代码完全相同。 我也检查了这个issue。但对我来说,如果我启用LifecycleBeanPostProcessor几乎大多数bean将为null。我在config类静态中创建了create方法,因为它在第二个链接中建议但没有运气。
所以我的问题是,有没有办法只在没有注册shiro过滤器的情况下启用授权?如果没有,如何解决这个问题?因为看起来ShiroFilterFactoryBean需要LifecycleBeanPostProcessor并且会破坏整个应用程序。
我们正在使用最新版本的Spring Boot和Shiro 1.2.4
答案 0 :(得分:0)
如评论中的https://www.youtube.com/playlist?list=PLI57HEydB_p7TogaXyArlE1ZNw4sgHmsd所述,您需要在主题中设置一个已经过身份验证的身份,这可以通过issue完成(我在这里使用的是1.5.2版) )。
Subject user = new Subject.Builder()
.principals(new SimplePrincipalCollection("bud", "myRealm"))
.authenticated(true)
.buildSubject();
if (user.hasRole("admin")) {
// do some authorized stuff
}
在实现自定义领域时,可以通过Subject.Builder()中所述的领域支持方法返回false来禁用身份验证功能。