2015-04-08 3 views
2

Я могу использовать атрибут [AllowAnonymous], чтобы позволить пользователю получить доступ к действию контроллера, но есть ли атрибут, позволяющий только анонимным пользователям действовать? например [AllowAnonymousOnly]Как заставить только анонимный доступ к действию контроллера?

+0

Из любопытства, зачем вам нужен такой метод? –

+0

У меня есть регистрация, где пользователь получает созданную учетную запись и автоматически регистрируется, а дополнительные шаги просто обновляют учетную запись с дополнительными данными. Я хотел, чтобы пользователь не удалялся назад или иным образом вручную переходил на первый шаг создания пользователя после входа в систему. Конечно, это приведет к тому, что пользователь создаст новую учетную запись, но может быть запутанной, поэтому я подумал, что это может быть лучшим способ предотвратить его. – Tarostar

ответ

5

Нет. Его не существует.

Однако вы можете создать его, создав свой собственный атрибут, наследующий от AuthorizeAttribute.

Here's an example.

Ваш будет выглядеть так:

public class AllowAnonymousOnlyAttribute : AuthorizeAttribute 
{  
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     // make sure the user is not authenticated. If it's not, return true. Otherwise, return false 
    } 
} 
+0

Похоже, я мог бы использовать связанный пример, но наоборот. – Tarostar

0

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

 if(User.Identity.IsAuthenticated) 
     { 
      return RedirectToRoute("home"); 
     } 

Если пользователь не вошел в систему, это то позволит пользователю просматривать содержимое страницы.

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