有一个身份验证服务必须通知客户端用户名和密码无效的原因。例如,其密码可能已过期。但是,身份验证服务中的 Login 方法应为匿名用户返回有效的 IPrinciple 或null。这意味着以下代码不起作用:
public UserAuthBase Login(string userName, string password, bool isPersistent, string customData)
{
var result = repository.Login(userName, password);
if (result != null && !result.PasswordExpired)
{
FormsAuthentication.SetAuthCookie(result.Name, true);
// Some Code
}
else if (result != null)
{
return new UserAuthBase { Name = string.Empty, PasswordExpired = true };
}
return result;
}
此代码将使用以下消息抛出 InvalidOperationException :
登录成功完成后,用户必须经过身份验证
如何更改此方法以支持客户端的任何消息?!
答案 0 :(得分:1)
如果我理解你的问题,你可以将try / catch放在Login方法中以捕获InvalidOperationException。然后,您可以通过选择向用户显示任何消息。