Проверка подлинности ASP.Net MVC на MasterPage - PullRequest
1 голос
/ 14 января 2011

Я хотел бы добавить чек для Request.IsAuthenticated в мою MasterPage (COntroller? Есть ли такая вещь?). Это возможно? Я хочу перенаправить на страницу NoAccess.aspx, если проверка не удалась.

Ответы [ 3 ]

3 голосов
/ 14 января 2011

Концепция MVC отличается от веб-форм, в которых вы будете выполнять общую логику на мастере.

В главной странице ASP.NET MVC должны содержаться только настройки, связанные с пользовательским интерфейсом.

В MVC вы используете фильтры действий: украсьте свои действия [Authorize].

2 голосов
/ 14 января 2011

Этого можно добиться, создав собственный атрибут аутентификации.

Создайте новую папку фильтра в вашем проекте и добавьте следующий класс

public class NoAccessDirectAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            filterContext.Result = new RedirectResult("noaccess.aspx");
    }
}

затем украсьте свой домашний контроллер и другие необходимые контроллеры с атрибутом авторизации

[NoAccessDirectAuthorizeAttribute]
public class HomeController : Controller

Это перенаправит не прошедшего проверку пользователя на вашу страницу noaccess.aspx

2 голосов
/ 14 января 2011

Вы создали проект, используя шаблон проекта MVC по умолчанию? Там есть все, что вы ищете, уже там. Если вы не пошли дальше и создайте его сейчас.

Когда вы окажетесь там, вы заметите атрибуты [Authorize], о которых упоминал @Aliostad. Это пользовательские атрибуты, которые выполняют проверку на уровне контроллера.

Ознакомьтесь с руководством MVC по безопасности веб-форм для более детального ознакомления с тем, как все это объединяется: http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...