在MVC3中使用[授权]

时间:2012-09-21 11:44:14

标签: asp.net-mvc-3

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

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

1 个答案:

答案 0 :(得分:2)

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

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

Panel模型的UsernamePassword属性与请求绑定,并且与UsernamePassword参数具有相同的值。

您应该根据某些数据库或其他内容检查用户名和密码。例如,如果您使用的是会员提供者:

[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();
}