Spring boot 整合shiro

1:引入shiro依赖

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-web-starter</artifactId>
<version>1.6.0</version>
</dependency>

2.编写realm的规范,也就是授权与认证的规则
public class UserRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("授权");
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();

Subject subject = SecurityUtils.getSubject();
User user= (User) subject.getPrincipal();//拿到认证时候 存储的user对象

info.addStringPermission(user.getPerms());//把用户的实际权限放入
return info;
}

@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
System.out.println("认证");

UsernamePasswordToken usernamePasswordToken= (UsernamePasswordToken) authenticationToken;

User user=userService.queryUserByName(usernamePasswordToken.getUsername());
if (user==null){//数据库里没有这个人
return null;
}
return new SimpleAuthenticationInfo(user,user.getPwd(),"");//使用简单的认证传递过去,可以使用其他的MD5,与MD5颜值加密
}
}

3:编写shiro的config文件

@Configuration
public class ShiroConfig {

@Bean(name = "shiroFilterFactoryBean")
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("bean") DefaultWebSecurityManager manager){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
//设置安全管理器
bean.setSecurityManager(manager);

Map<String, String> map = new LinkedHashMap<>();
map.put("user/add","user:add");//这里就是 用户权限字段里的值 ,从UserRealme中拿
map.put("user/update","uers:update");
bean.setFilterChainDefinitionMap(map);
return bean;

}

//安全管理器
@Bean(name = "bean")
public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
DefaultWebSecurityManager defaultWebSecurityManager=new DefaultWebSecurityManager();

defaultWebSecurityManager.setRealm(userRealm);
return defaultWebSecurityManager;
}

@Bean
public UserRealm userRealm(){
return new UserRealm();
}
}
这是错误

 

 4:可以直接运行了

posted @ 2021-11-24 16:10  MaxCui  阅读(54)  评论(0)    收藏  举报