如果密码无效,我如何返回枚举状态,但如果密码无效则返回记录
本文关键字:返回 无效 如果 密码 状态 记录 枚举 何返回 | 更新日期: 2023-09-27 18:29:58
我已经修改了我的验证,如果它找到了记录,我会返回一个枚举类型,以确定用户输入的密码或用户名是否不正确??如我在返回错误密码时所示。
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, "~");
}
}
-
isValidUser
的名称听起来应该返回bool
。 -
我的建议是创建新的类
公共密封的UserValidationResult{公共用户用户{get;set;}公共登录状态{get;set;}}
并修改您的方法以返回类似的UserValidationResult
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; }
}
添加out
参数:
public user isValidUser(string username, string userPassword, out LoginStatus loginStatus)
{
...
}
enum LoginStatus
{
success,
badPassword,
badUsername
}
因此,在您的代码中,设置loginStatus
的值以反映所发生的情况。如果出现问题,通常我会将返回值设置为null,并用enum
描述问题。
这样调用方法:
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...}