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

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

不,它不存在。

但是,您可以通过创建inheritance自AuthorizeAttribute的属性来创建它。

这是一个例子 。

你的看起来像:

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

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

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

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