Shiro Spring整合 实现自定义realm:
配置文件
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
**<!--自定义Realm-->
<property name="realm" ref="shiroMyRealm"/>**
<!--缓存管理-->
<property name="cacheManager" ref="cacheManager"/>
<!-- 定义要使用的session管理器 -->
<property name="sessionManager" ref="sessionManager"/>
</bean>
<bean id="shiroMyRealm" class="com.nanyin.common.shiro.ShiroMyRealm">
</bean>
一般realm继承Authorization类
完整自定义realm代码
`public class ShiroMyRealm extends AuthorizingRealm {
private static final Logger logger = LoggerFactory.getLogger(ShiroMyRealm.class);
@Autowired
private UserService userService;
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
logger.info("##############执行权限认证###############");
String username = (String) principalCollection.getPrimaryPrincipal(); //获取用户名
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
authorizationInfo.setRoles(userService.getRoles(username));
authorizationInfo.setStringPermissions(userService.getPermissions(username));
return authorizationInfo;
}
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
String username = (String) authenticationToken.getPrincipal();
User user = (User) userService.selectByName(username);
if(user != null){
AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user.getName(),user.getPassword(),"myreaml");
return authenticationInfo ;
}else return null ;
}
}`