如何强制只匿名访问控制器操作?

时间:2015-04-08 11:51:59

标签: c# asp.net-mvc authentication asp.net-mvc-5

我可以使用[AllowAnonymous]属性来允许用户访问控制器操作,但是是否有一个属性只允许匿名用户执行操作?例如[AllowAnonymousOnly]

2 个答案:

答案 0 :(得分:8)

没有。它不存在。

但是,您可以通过创建自己继承自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
    }
}

答案 1 :(得分:0)

您可以检查用户的身份验证。如果用户已登录,则将其重定向远离控制器。这可以使用MVC的角色提供者实现如下:

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

如果用户未登录,则允许用户查看页面内容。