Search code examples
c#asp.net-mvcauthenticationasp.net-mvc-5

How to force only anonymous access to controller action?


I can use the [AllowAnonymous] attribute to permit a user to access a controller action, but is there an attribute to permit only anonymous users to an action? e.g. [AllowAnonymousOnly]


Solution

  • No. It doesn't exist.

    However, you can create it by creating your own attribute inheriting from the AuthorizeAttribute.

    Here's an example.

    Yours would look like:

    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
        }
    }