0

大家好,我使用过 [Authorize],但是当重定向到登录视图时,我可以登录任何用户名或密码,那么问题是什么,并且还要检查用户是否登录?

public ActionResult Login()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Login(Panel model, string Username, string Password)
        {
            if (ModelState.IsValid)
            {
                if (model.Username == Username && model.Password == Password)
                {
                    FormsAuthentication.SetAuthCookie(model.Username, false);
                    return RedirectToAction("Index", "Test");
                }
                else
                {
                    ModelState.AddModelError("", "Wrong username or password");
                }
            }
            return View();
        }

        [Authorize]
        public ActionResult Index()

        {

            return View();
        }
4

1 回答 1

2

以下测试是错误的,它将始终返回 true:

if (model.Username == Username && model.Password == Password)

Panel 模型的Username和属性是从请求中绑定的,并且具有与和参数Password相同的值。UsernamePassword

您应该根据某个数据库或其他东西检查用户名和密码。例如,如果您使用 Membership 提供程序:

[HttpPost]
public ActionResult Login(Panel model)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.Username, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.Username, false);
            return RedirectToAction("Index", "Test");
        }
        else
        {
            ModelState.AddModelError("", "Wrong username or password");
        }
    }
    return View();
}
于 2012-09-21T11:58:12.487 回答