2012-09-21 4 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

Следующий тест является неправильным, и он всегда возвращает истину:

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

В панели модель в Username и Password свойства связанно из запроса и имеет то же значение, что и Username и Password аргументов.

Вы должны проверить имя пользователя и пароль для какой-либо базы данных или что-то в этом роде. Например, если вы пользуетесь поставщиком членства:

[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

Смежные вопросы