2012-09-21 101 views
0

大家好,我已經使用[授權],但是當重定向到登錄視圖時,我可以登錄任何用戶名或密碼,這是什麼問題,並檢查用戶是否登錄?在MVC3中使用[授權]

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

回答

2

下面的測試是錯誤的,它總是返回true:

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

小組模型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(); 
} 
+0

補充信息:要檢查用戶是否登錄使用User.Identity.IsAuthenticated' – BrunoLM