应用系统项目的安全要求越来越高,基本都是采取https等加密证书传输,无法使用https的,也是要求不能明文传输内容,因此做一些等保要求,密码需要加密后才能传输给服务端,所以前端会采取一些密码手段,保证一定的安全性。
项目集成的IdentityServer3实现账户和密码登录,如果前端做AES加密,同时要求密码长度不少于8位,这样把密码加密后,再通过传输,整个Password密码的长度会超过100个字符。然后在登录的时候,即使输入正确的密码,发现系统还是会跳转到登录页面,好像没有起到什么用,包括输入错误的密码。
问题原因:
1、可以查看IdentityServer3源码:InputLengthRestrictions
Password的InputLengthRestrictions长度是100。
2、AuthenticationController的方法LoginLocal里有句判断:
if (model.Username.Length > options.InputLengthRestrictions.UserName || model.Password.Length > options.InputLengthRestrictions.Password)
{
Logger.Error("username or password submitted beyond allowed length");
return await RenderLoginPage(signInMessage, signin);
}
也就是如果密码长度超过100会自动判断到登录页面。
解决方案:
将密码的InputLengthRestrictions设置长一点,比如1000字符等,如下图:
可以在项目初始化的时候,配置IdentityServerOptions属性,设置InputLengthRestrictions.Password = 1000即可。文章来源:https://www.toymoban.com/news/detail-684362.html
IdentityServerOptions.InputLengthRestrictions.Password = 1000;文章来源地址https://www.toymoban.com/news/detail-684362.html
到了这里,关于IdentityServer密码长度超长会导致跳转到登录页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!