Closed Liuguozhu closed 4 years ago
你改代码了吗? 这好像是写cookie时加密出的问题
这部分代码没改
@Liuguozhu 你jdk版本是多少?
1.8.0_31
@Liuguozhu 如果不对pybbs源码做任务修改, 直接启动有这个错吗?
我在网上找了一下, 没有找到啥好办法, 都说是加密问题, 如果ShiroConfig 类你没有修改东西, 应该不会出现这个错的
这个没改过啊,我就了点别的页面,表以及对应的mapper,Service、controller等
@Liuguozhu 你先试试看从master上下载最新的源码, 看能正常启动不?
因为我部署的 demo.yiiu.co 和平时开发都没有碰到这个问题, 我还真不知道怎么解决..
好,我试试,再找找看有没有解决办法
@tomoya92 我试了你demo演示后台,记住我功能也没生效,每次都要输入账号密码登录
@tomoya92 我试了你demo演示后台,记住我功能也没生效,每次都要输入账号密码登录
就是这个地址:https://demo.yiiu.co/adminlogin 你看看是不是也是报错导致的
@tomoya92 我试了你demo演示后台,记住我功能也没生效,每次都要输入账号密码登录
就是这个地址:https://demo.yiiu.co/adminlogin 你看看是不是也是报错导致的
我部署的这个后台登录没有问题呀
我下了最新的代码,没做任何改动,启动后,登录也会报这个错,可以正常登录,就是“记不住我”
解决报错问题: co.yiiu.pybbs.config.ShiroConfig.rememberMeManager(); 修改如下:
@Bean
@DependsOn("mybatisPlusConfig")
public CookieRememberMeManager rememberMeManager() {
//System.out.println("ShiroConfiguration.rememberMeManager()");
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
//rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)
cookieRememberMeManager.setCipherKey(Base64.encode("pybbs best!".getBytes()));
// cookieRememberMeManager.setCipherKey(Base64.decode("wGiHplamyXlVB11UXWol8g=="));
return cookieRememberMeManager;
}
主要是CipherKey的长度导致的,24位修改为16位就不报错了
public static void main(String[] args) {
System.out.println(Base64.encode("pybbs is the best!".getBytes()).length);
System.out.println(Base64.encode("pybbs best!".getBytes()).length);
}
执行结果
24
16
这个只是不报错了,但是,重新打开浏览器,还是要重新输入账号密码重新登录
@Liuguozhu 为啥我没有动代码的情况下也没有问题呢? 挺奇怪的..
另外记住我功能我测试的时候看到cookie里有readme信息, 登录完成后, 重启服务再次访问后台也是没有问题的, 但这个时效是多久我没有做测试, 感觉挺短的
@tomoya92 我看你那个时间代码里设置的是5分钟,但是我是在一分钟之内试的。,服务器没重启,只是关闭浏览器重新打开,就不行。重启服务器更不行。还不如借助浏览器的记住密码。
@Liuguozhu
这个只是不报错了,但是,重新打开浏览器,还是要重新输入账号密码重新登录
这个问题终于解决了,shiro里内置的几个filter里
我之前把 /admin/**
都配置成了 authc
,导致了rememberMe没有生效的机会,现在修改好了,详见:https://github.com/tomoya92/pybbs/commit/7cdac7b70f164963d9caf4e7b86fc5b255862986
暂时未找到解决方案