我试图这样做,如果用户登录时拿着密码" 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()));
}
}
答案 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");
}