sprinboot+shiro+redis(用到crazycake)实现用户权限管理demo

建立数据库

建立5张表,分别是用户表、角色表、权限表、用户角色表、角色权限表:
在这里插入图片描述
其中用户表、角色表、权限表是实体表,用户角色表、角色权限表是功能表,用于连接三张实体表。

注入依赖

 <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring-boot-web-starter</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-all</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.crazycake</groupId>
            <artifactId>shiro-redis</artifactId>
            <version>3.1.0</version>
        </dependency>

创建实体model和dao层

这里用到maven自动工具,故不细说。
但是有一点需要提到的是,其中由于用户表需要实现持久化,所以用户类需要继承Serializable这个接口,至于为什么要用到接口Serializable,参考博客:为什么要实现Serializable

写redis配置

在application.yml中配置redis相关静态变量,如下:

shiro:
  redis:
    host: 127.0.0.1:6379
    timeout: 1800000

这里只写了端口与连接超时时长。
接着写一个redis的配置类:

@Configuration
public class New_RedisConfig {
   

    @Value("${shiro.redis.host}")
    private String host;

    @Value("${shiro.redis.timeout}")
    private int timeout;

//    private String password;

    public String getHost() {
   
        return host;
    }

    public void setHost(String host) {
   
        this.host = host;
    }

    public int getTimeout() {
   
        return timeout;
    }

    public void setTimeout(int timeout) {
   
        this.timeout = timeout;
    }

}

自定义realm

public class UserRealm extends AuthorizingRealm {
   
    @Autowired
    private UserService userService;

    @Autowired
    private IAuthQueryService authQueryService;
    /**
     * 执行授权逻辑
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
   
        System.out.println("执行授权逻辑");
        if (principalCollection == null) {
   
            throw new AuthorizationException("PrincipalCollection method argument cannot be null.");
        }
        Object principal = getAvailablePrincipal(principalCollection);
        if(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值