2 回答
TA贡献1799条经验 获得超9个赞
许多软件质量和安全法规对此都有审计要求(没有向最终用户显示的错误消息可能包含机密信息或会使具有恶意意图的用户破坏系统或访问敏感数据),因此这是一个重要问题。如果有专门解决此问题的文档或文章,那么它就隐藏得很好。
IdentityError
类的两个成员可以假定的可能值被纳入框架。因此,看起来您可以确定它始终是其中之一,除非您IdentitiyError
从 a 以外的任何其他地方获得了一个实例UserManager
。
该Code
字段是从nameof
错误方法分配的,关联的Description
文本是从核心框架资源中读取的,因此这些将被本地化。
当前实现中的错误列表(版本 3.0.0):
默认错误
并发失败
密码不匹配
令牌无效
RecoveryCodeRedemptionFailed
登录已关联
无效的用户名
不合规电邮
重复的用户名
重复电子邮件
无效角色名称
重复角色名称
用户已有密码
用户锁定未启用
用户已入职
用户不在角色
密码太短
PasswordRequiresUniqueChars
密码需要非字母数字
密码需要非字母数字
密码要求较低
密码需要大写
其中大部分是静态字符串,不公开任何变量信息。
以下确实披露了可变信息。这是用户先前在前八种情况下无论如何提供的数据,以及在后两种情况下服务器配置属性的值,所需的最小密码长度和有效密码中所需的最小唯一字符数:
InvalidUserName:用户名
InvalidEmail:电子邮件地址
DuplicateUserName:用户名
DuplicateEmail:电子邮件地址
InvalidRoleName:角色名称
DuplicateRoleName:角色名称
UserAlreadyInRole:角色名称
UserNotInRole:角色名称
PasswordTooShort:最小密码长度
PasswordRequiresUniqueChars:所需的唯一字符数
如果在您的项目的限制和规范内这符合“安全”的条件,那么答案是肯定的。
TA贡献1890条经验 获得超9个赞
关于如何做的第二个问题,您可以执行以下操作以在循环错误时过滤掉重复的用户名
if (error.Code == _userManager.ErrorDescriber.DuplicateUserName(user.UserName).Code) { //Hide info to user by, e.g. redirecting to a page for a registration flow, or display an invalid login attempt for a login flow }
- 2 回答
- 0 关注
- 205 浏览
添加回答
举报