C# 如果密码无效,如何返回枚举状态?如果密码无效,如何返回记录
我已经修改了我的validate,以便在找到记录时返回记录,但是我如何也返回枚举类型,以确定用户输入的密码或用户名是否不正确?? 如我在假密码报税表中所示C# 如果密码无效,如何返回枚举状态?如果密码无效,如何返回记录,c#,entity-framework,authentication,C#,Entity Framework,Authentication,我已经修改了我的validate,以便在找到记录时返回记录,但是我如何也返回枚举类型,以确定用户输入的密码或用户名是否不正确?? 如我在假密码报税表中所示 public user isValidUser(string username, string userPassword) { try { var _currentUser = _db.users.FirstOrDefault(a => a.username == username);
public user isValidUser(string username, string userPassword)
{
try
{
var _currentUser = _db.users.FirstOrDefault(a => a.username == username);
if (_currentUser != null)
{
string descriptedPassword = encrypt.DecryptRijndael(_currentUser.password, _currentUser.salt.ToString());
if (descriptedPassword == userPassword)
return _currentUser;
else
return recordEnum.invalidPassword ????
}
}
catch (Exception ex)
{
Mercentwarehousecms
.Logging
.ExceptionUtility
.LogErrorMessage("isValidUser Error DB Context", ex, "~");
}
}
添加一个
out
参数:
public user isValidUser(string username, string userPassword, out LoginStatus loginStatus)
{
...
}
enum LoginStatus
{
success,
badPassword,
badUsername
}
因此,在代码中设置loginStatus
的值以反映发生的情况。通常,如果出现问题,我会将返回值设置为null,并使用枚举描述问题
按如下方式调用该方法:
LoginStatus result;
user userResult = isValidUser(username, password, out result);//Be sure to use the word "out" before your paramter
if (result == LoginStatus.success)
{//Yay!}
else if (result == LoginStatus.badPassword)
{//awww...}
else if (result == LoginStatus.badUsername)
{//awww...}
isValidUser
名称听起来应该返回bool
我的建议是建立一个新的班级
公共密封UserValidationResult
{
公共用户{get;set;}
公共登录状态{get;set;}
}
并修改方法以返回UserValidationResult
like
public UserValidationResult CheckUser(string userName, string userPassword)
{
var user = GetUser(username, userPassword);
return user != null ?
new UserValidationResult { Status = LoginStatus.Sucess, User = user }
: new UserValidationResult { Status = LoginStatus.Failed; }
}
请参见上文plz如何检索out参数A以及如何最好地调用此方法now@StreetHawkmsdn.microsoft.com/en-gb/library/t3c3bfhx.aspx这解释了一切;)@StreetHawk我做了一个编辑来回答你的后续问题。顺便说一句,你不应该对答案进行更改,除非你正在改进答案(即,不要进行更改以要求跟进)。另一个我们的问题是,我需要跟踪谁是管理员,谁不是管理员。我可以在任何页面上访问它的最佳方式是什么