在mvc方面需要帮助

时间:2016-06-27 20:18:26

标签: c# asp.net-mvc

我试图这样做,如果用户登录时拿着密码" tja"在数据库中将他发送到一个页面,否则另一个页面,但不能让它工作。

任何人都可以帮我解决正确的代码吗?

//This is the code I have now.

public string mypassword = "tja";

// GET: SmsBuys
public ActionResult Index()
{
      var getuser = User.Identity.GetUserId();
      var getpassword = db.SmsBuys.Where(x => x.code == mypassword);

      if (getpassword == getuser) //This is wrong I know
      {
           return RedirectToAction("Index", "Buys");
      }
      else
      {
           return View(db.SmsBuys.ToList().Where(x => x.UserId == User.Identity.GetUserId()));
      }
}

1 个答案:

答案 0 :(得分:0)

处理密码辅助功能

当前用户的密码实际上只有在将其发布到服务器时才能访问。

因此,您可能需要在实际POST事件中处理它,在该事件中,您的用户将相应的登录凭据发布到服务器以进行应用程序身份验证。

我们假设您有一个非常基本的表单,供您的用户登录:

<form action='@Url.Action("SignIn","Account")' method='post'>
     <input name='username' placeholder='Username' />
     <input name='password' type='password' placeholder='Password' />
     <input type='submit' value='Log In' />
</form>

发布后,这将在您的帐户控制器中查找类似于以下内容的SignIn操作,您可以在此处理此逻辑:

[HttpPost]
public ActionResult SignIn(string username, string password)
{
      // Compare your password
      if(password == yourSpecialPassword)
      {
          return RedirectToAction("Index", "Buys");
      }

      // If you are still around, authenticate the user here
}

用户的密码将在password变量中传递,然后您可以使用该变量与数据库值进行比较,以确定要采取的最佳行动方案。

从数据库访问

此外,如果您正在读取要从数据库进行检查的密码,那么您可能希望使用FirstOrDefault()方法来提取单个密码,而不是Where()。他们的集合:

var getpassword = db.SmsBuys.FirstOrDefault(x => x.code == mypassword);
// If a password was found, check against the posted value
if(password == getpassword)
{
      return RedirectToAction("Index", "Buys");
}