C# 如果密码无效,如何返回枚举状态?如果密码无效,如何返回记录

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);

我已经修改了我的validate,以便在找到记录时返回记录,但是我如何也返回枚举类型,以确定用户输入的密码或用户名是否不正确?? 如我在假密码报税表中所示

  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我做了一个编辑来回答你的后续问题。顺便说一句,你不应该对答案进行更改,除非你正在改进答案(即,不要进行更改以要求跟进)。另一个我们的问题是,我需要跟踪谁是管理员,谁不是管理员。我可以在任何页面上访问它的最佳方式是什么