Shiro整合Spring boot

本文介绍了如何使用Apache Shiro与Spring进行整合,实现轻量级的用户角色和权限管理。通过引入Shiro依赖,创建自定义Realm进行认证和授权,配置ShiroFilterFactoryBean设置过滤规则,实现登录、权限校验等功能。示例中展示了如何配置SecurityManager、定义过滤链以及处理登录、未授权等场景。
摘要由CSDN通过智能技术生成

shiro是一个轻量级用户角色,权限管理框架(根据路径管理),功能简单,配置简单。

导入依赖

<!-- Shiro整合Spring -->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.5.3</version>
</dependency>

创建Realm

public class MyRealm extends AuthorizingRealm {
//授权,只有成功通过doGetAuthenticationInfo方法的认证后才会执行
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        //角色认证
        info.addRoles(roles);
        //权限认证
        info.addStringPermissions(perms);
        return info;
}
//认证,从数据库获根据用户名取用户密码
//这里认证的是token中的用户名对应数据库中的密码和接收到的密码一致
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String userName = (String) token.getPrincipal();
String password = mapper.getPasswordByUserName(userName);
if(password != null){
        return new SimpleAuthentictionInfo(userName,pasword,getName());
}
return null;
}

配置Shiro

@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean filterFactoryBean(@Qualifier("manager") DefaultWebSecurityManager manager) {
    ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
    factoryBean.setSecurityManager(manager);
    Map<String, String> map = new HashMap<>();
    map.put("/avatar/user/add", "roles[admin]");
    map.put("/avatar/user/add", "perms[insert]");
    map.put("/**","authc");
    map.put("/avatar/user/login", "anon");
    factoryBean.setFilterChainDefinitionMap(map);
    factoryBean.setLoginUrl("/avatar/user/login");
   //认证成功默认跳转页面
   factoryBean.setSuccessUrl("/avatar/user/login");
   //没有权限默认跳转的页面
   factoryBean.setUnauthorizedUrl("/avatar/defult");
return factoryBean;
}
@Bean
public DefaultWebSecurityManager manager(@Qualifier("myRealm") MyRealm myRealm) {
    DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
    manager.setRealm(myRealm);
    return manager;
}
@Bean
public MyRealm myRealm() {
    return new MyRealm();
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值