2015-09-04 3 views
3

Я создаю новое веб-приложение ASP.NET, и я не планирую использовать концепцию «ролей». Тем не менее, я хочу, чтобы пользователь регистрировался на определенных страницах. Есть ли какой-либо существующий атрибут, который просто проверяет, зарегистрирован ли пользователь и перенаправляет ли он, или выдает ошибку, если это не так? Каждый найденный мной поиск указывает на использование ролей (например, this one).Использовать авторизованный атрибут для проверки личности пользователя, зарегистрированного в

+1

декорирования действие с '[Авторизоваться]' атрибут будет возвращать только успешно, когда пользователь вошел в систему Там также 'Request.IsAuthenticated' – trashr0x

+0

вы можете также добавить [. Авторизовать] для всего класса. – Anonymous

+0

Взгляните на этот вопрос http://stackoverflow.com/questions/32095889/mvc-authentication-easiest-way/32096289#32096289 Надеюсь, что это поможет. –

ответ

7

Атрибут [Authorize] будет успешно возвращен, только если пользователь, инициирующий запрос, войдет в систему и будет работать только на контроллерах и методах действий.

Он может быть использован для украшения определенного действия:

... или весь контроллер:

// all actions in FooController require authentication 
[Authorize] 
public class FooController : Controller 
{ 
    public async Task<ActionResult> FooAction() 
    {   

    } 

    public async Task<ActionResult> BarAction() 
    { 

    } 
} 

Вы также имеете Request.IsAuthenticated, которые могут быть использованы как на действия и не- методы действия:

if (Request.IsAuthenticated) //or @if in Razor 
{ 
    //request is authenticated 
} 

... и даже User.Identity.IsAuthenticated в @Darko соответ в своем ответе. Лично я предпочитаю Request.IsAuthenticated более User.Identity.IsAuthenticated, так как он также предоставляет некоторые полезные нулевые проверки для User и User.Identity. Вот как выглядит Request.IsAuthenticated под капотом:

public bool IsAuthenticated 
{ 
    get 
    { 
     return(_context.User != null 
       && _context.User.Identity != null 
       && _context.User.Identity.IsAuthenticated); 
    } 
} 
+1

Отличный ответ! Я буду использовать каждый из этих вариантов. – muttley91

+0

Рад, что я мог бы помочь. – trashr0x

-2

Вы можете использовать свойство User, просто введите if(), где он может контролировать доступ, и все. защищен недействительным Page_Load (объект отправителя, EventArgs е)

{ 
    if (User.Identity.IsAuthenticated) 
    { 
     Page.Title = "Home page for " + User.Identity.Name; 
    } 
    else 
    { 
     Page.Title = "Home page for guest user."; 
    } 
} 

Это должно работать после того, как вы установите web.config. Вот документация https://msdn.microsoft.com/en-us/library/9wff0kyh(v=vs.85).aspx

+2

Проблема с вашей ссылкой - это говорит об аутентификации форм. И Framework Identity, о котором идет речь, не использует это. Хотя часть кода, где вы проверяете «IsAuthenticated», верна, остальная часть образца не указана - в MVC нет объекта «Страница» - вы говорите о WebForms, и вопрос касается не WebForms. – trailmax

+0

Ничего больше добавить, просто вниз, потому что это не относится к вопросу пользователя, хотя это важная информация все-таки. – maniak1982