这是昨天实际遇到的问题,用户登录成功并拿到了 cookie ,但访问 asp.net core 站点时总是显示未登录,而在出问题之前登录的用户没这个问题。
根据这个现象推测可能是登录时用于生成 cookie 的加密密钥(data protection key)与访问时用于解密 cookie 的 key 不一致引起的,于是重启所有 asp.net core 站点以重新加载最新的密钥,重启后问题解决。
查看存储在 redis 中的 data protection keys,发现2天前由于 key 到期(默认有效期是90天),data protection system 自动生成了新的 key ,新的 key 有2天的激活期,如果在2天内被正常激活,会实现 key 的无缝切换,对系统无任何影响。但不知为什么这个新 key 在 2天中没有被激活,于是 data protection system 又重新生成了一个 key ,结果造成登录时使用新 key 加密,访问时却使用旧 key 解密。
请问如何在 asp.net core 中如果避免出现这样的问题?
你的问题有点复杂,我都没看懂
我也遇到了同样的情况..我选择直接设置秘钥为10年有效期..
.net 5.0 开始我们没再遇到这个问题
.net 5.0 开始没再遇到这个问题
– dudu 2年前