2013-05-21 3 views
1

Я изучаю mvc3 и читаю статью или смотрю видео на сайте asp.net. После того, как у меня есть некоторые знания о mvc3, и поэтому у меня есть вопрос о Авторизовать атрибут для аутентификации пользователя - это логин или нет. код по умолчанию, когда я создать страницу для аутентификации пользователя, как это:Как работает атрибут авторизации в MVC3

[HttpPost] 
    public ActionResult LogOn(LogOnModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      if (Membership.ValidateUser(model.UserName, model.Password)) 
      { 
       FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
       if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
       { 
        return Redirect(returnUrl); 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
      } 
      else 
      { 
       ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

Если я не хочу использовать членство и FormsAuthentication (Не говори о проверке подлинности Windows) для авторизации пользователя. Так что есть способ создать что-то для аутентификации пользователя, и когда я использую Авторизовать атрибут будет работать, как при использовании Членство и формаАутентификация. Я не знаю, что атрибут Authorize используется для аутентификации пользователя - это логин или нет, из которого я могу самостоятельно создать сеанс или файл cookie для аутентификации пользователя. Если мой вопрос не ясен, пожалуйста, дайте мне знать! Спасибо за чтение!

ответ

3

Что вы можете сделать, это свернуть свой собственный атрибут авторизовать так:

public class AuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute 
{ 

    protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) 
    { 
     //Put your authorisation check here 
    } 

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     //put your redirect to login controller here 
    } 
} 
+0

Спасибо за ответ мне в ближайшее время. Как вы сказали, я не могу сделать что-то очень простое для аутентификации пользователя? Например, когда пользователь вводит логин, я сам создам сеанс или файл cookie, чтобы, когда я вызываю атрибут Authorize, он будет знать логин пользователя или нет. Или я должен использовать Formauthentication для аутентификации пользователя, и после этого атрибут Authorize может работать как Default. – vietvoquoc

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