asp.net mvc и проверьте, вошел ли пользователь в систему - PullRequest
4 голосов
/ 30 марта 2011

Я новичок в asp.net mvc, и мне нужно проверить, вошел ли пользователь в мое приложение или нет, поэтому я помещаю следующий фрагмент кода в мой global.asax

    void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication application = (HttpApplication)sender;
        HttpContext context = application.Context;

        string filePath= context.Request.FilePath;
        string fileExtention = VirtualPathUtility.GetExtension(filePath);

        // to skip request for static content like (.css or .js)
        if (fileExtention == "")
        {                
            if (filePath.ToLower() != "/account/login")
            {
                var user = (Utilisateur)context.Session["USER"];
                if (user == null)
                    context.Response.Redirect(@"~/account/login");
            }                
        } 
    }

Я перехватываю каждый входящий запрос для проверки, я хотел бы знать, есть ли другие способы выполнить эту работу и заранее спасибо.

Ответы [ 2 ]

24 голосов
/ 30 марта 2011

Вам нужно сделать это таким образом? Вы должны проверить, можете ли вы использовать asp.net провайдеров аутентификации, авторизации и членства. (Они автоматически генерируются при создании нового приложения ASP.NET MVC 3 [когда вы оставляете флажок «Интернет-приложение»)).

Затем можно использовать аннотацию для контроллеров и действий: (псевдокод):
Это позволяет получить доступ к контроллеру только авторизованным пользователям (вы даже можете указать, какие пользователи или какие роли разрешены): [Authorize (Roles = "Administrators")]

[Authorize]
controller{.....}

А чтобы проверить, вошел ли пользователь, уже существует свойство User со свойством Identity.
Этот код проверяет, авторизован ли пользователь (вошел в систему):

controller...() {
...
if (User.Identity.IsAuthenticated) ...
...
}
2 голосов
/ 30 марта 2011

Поскольку вы упомянули, что у вас есть свой собственный «модуль», который работает с несколькими базами данных, я думаю, вам следует реализовать этот модуль в качестве стандартного ASP.NET / MVC провайдера пользовательского членства / аутентификации.Затем вы можете использовать HttpContext.User.Identity.IsAuthenticated и ограничить доступ к действиям вашего контроллера (или всего контроллера), украсив его атрибутом [Authorize].

...