shiro 升级到 1.4.1,并优化 记住我功能,详见 RememberMeKeyGen 文件。

This commit is contained in:
thinkgem
2019-11-07 00:04:51 +08:00
parent 64b53c5aff
commit 5f8ae44b41
5 changed files with 36 additions and 17 deletions

View File

@@ -89,6 +89,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<!-- <plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@@ -332,8 +332,8 @@ logging:
#======================================#
# Shiro 相关配置
#shiro:
#
shiro:
# #索引页路径
# defaultPath: ${shiro.loginUrl}
#
@@ -351,24 +351,20 @@ logging:
#
# # 简单 SSO 登录相关配置
# sso:
#
# # 如果启用/sso/{username}/{token}单点登录请修改此安全key并与单点登录系统key一致。
# secretKey: ~
#
# # 是否加密单点登录安全Key
# encryptKey: true
#
# # 登录提交信息加密(如果不需要加密,设置为空即可)
# loginSubmit:
#
# # 登录提交信息安全Key加密用户名、密码、验证码后再提交key设置为3个用逗号分隔
# secretKey: thinkgem,jeesite,com
#
# # 记住我密钥设置(设置为空则使用默认)
# rememberMe:
# # 密钥必须通过 com.jeesite.common.shiro.web.RememberMeManager 的main方法生成
# secretKey: ~
#
# 记住我密钥设置,为空则自动生成一个新密钥,也可以通过 com.jeesite.test.RememberMeKeyGen 生成
rememberMe:
secretKey: ~
# # 指定获取客户端IP的Header名称防止IP伪造。指定为空则使用原生方法获取IP。
# remoteAddrHeaderName: X-Forwarded-For
#

View File

@@ -0,0 +1,24 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
*/
package com.jeesite.test;
import org.apache.shiro.crypto.AesCipherService;
/**
* v4.1.8 开始将不为记住我功能,设置默认密钥,即启动系统时生成新密钥。
* 这样会造成一个问题,比如:重启服务后,记住登录的用户因为解密失败,而需要重新登录。
* 为了解决这个问题,您可以通过这个类获取一个新密钥,设置到 shiro.rememberMe.secretKey 中即可。
* 另外,如果你从配置文件里将 shiro.rememberMe.secretKey 设置为空,启动系统时也会自动设置一个新的密钥。
* @author ThinkGem
* @version 2019年11月6日
*/
public class RememberMeKeyGen {
public static void main(String[] args) {
byte[] cipherKey = new AesCipherService().generateNewKey().getEncoded();
String secretKey = org.apache.shiro.codec.Base64.encodeToString(cipherKey);
System.out.println("shiro.rememberMe.secretKey = " + secretKey);
}
}