教你如何使用shiro和redis保存登录信息

1. 整体流程

下面是实现"shiro使用redis保存登录信息"的流程:

创建shiro.ini配置文件 创建ShiroRealm类 配置ShiroRealm类的认证和授权逻辑 整合Shiro和Redis 编写登录和保存登录信息的代码

2. 具体步骤及代码示例

步骤1:创建shiro.ini配置文件

首先,我们需要创建一个shiro.ini配置文件,内容如下:

[main]
redisManager = org.crazycake.shiro.RedisManager
redisManager.host = localhost
redisManager.port = 6379
cacheManager = org.crazycake.shiro.RedisCacheManager
cacheManager.redisManager = $redisManager
securityManager.cacheManager = $cacheManager
securityManager.sessionMode = redis
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
步骤2:创建ShiroRealm类

接下来,创建一个自定义的ShiroRealm类,并实现认证和授权逻辑:

public class CustomRealm extends AuthorizingRealm {

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        // 实现授权逻辑
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        // 实现认证逻辑
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
步骤3:整合Shiro和Redis

在pom.xml文件中添加Shiro和Redis的依赖:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.4.2</version>
</dependency>
<dependency>
    <groupId>org.crazycake</groupId>
    <artifactId>shiro-redis</artifactId>
    <version>3.2.2</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
步骤4:编写登录和保存登录信息的代码

最后,在登录和保存登录信息的地方使用以下代码:

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;

// 登录
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);

// 保存登录信息到Redis
subject.getSession().setAttribute("key", "value");
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

类图

下面是Shiro的类图:

AuthorizingRealm doGetAuthorizationInfo(PrincipalCollection principals) doGetAuthenticationInfo(AuthenticationToken token) CustomRealm

通过上述步骤,你就可以成功地使用shiro和redis保存登录信息了。

希望以上内容对你有所帮助,如果有任何疑问欢迎随时向我咨询。祝学习顺利!