2013-02-26 3 views
1

Я написал webApp в ASP.NET MVC4 с C#. Я вхожу в систему с помощью FormsAuthentication.SetAuthCookie (имя пользователя, true); метод.Проверить статус входа в каждый метод контроллера

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

Любая идея, как это сделать?

+1

использовать [авторизацию] атрибут на контроллере –

+1

Кроме того, зарегистрировать глобальный Авторизовать фильтр, так что вы можете опустить Авторизовать атрибут на каждом из ваших контроллеров. Вы все же можете разрешить анонимный доступ через атрибут AllowAnonymous. – fjdumont

ответ

2

Используйте [AuthorizeAttribute] для достижения того, что вам нужно. Например:

public class AccountController : Controller 
{ 

    [Authorize] 
    ActionResult ActionRequiringAuthorization()... 
    .... 

    [AllowAnonymous] //Will allow both, authenticated and non-authenticated requests 
    ActionResult PublicAction() ... 
} 

Если пользователь больше не идентифицирован, он будет перенаправлен на страницу входа на попытку выполнить какие-либо действия, украшенные атрибут Authorize.

Вы можете украсить весь контроллер применять один и тот же атрибут для всех действий, как в:

[Authorize] 
public class AccountController : Controller 
+0

Вы также можете проверить, аутентифицирован ли пользователь, используя User.Identity.IsAuthenticated внутри вашего метода контроллера. Но лучший способ контролировать доступ - это атрибуты @Icarus. Они также могут быть настроены для определенных ролей, подобных этому [Authorize (Роли = «role1, role2»)] – amhed