阻止授权用户访问操作

时间:2017-01-09 11:57:37

标签: c# .net asp.net-mvc-4

我知道如果我有一个方法而我只想Authenticated使用它我可以用它来标记:

[Authorize]

如果我有一个方法,我希望authorizednon authorized人都使用它,我可以用以下方法标记方法:

[AllowAnonymous]

如果我的方法只有Anonymous users可以使用,not Authenticated users我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用此UnAuthenticatedOnlyAttribute

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class UnAuthenticatedOnlyAttribute : ActionFilterAttribute
{
    public string RedirectTo { get; set; } = "/Error";

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var user = filterContext.HttpContext.User;

        if (user != null && user.Identity != null && user.Identity.IsAuthenticated)
            filterContext.Result = new RedirectResult(RedirectTo);
    }
}

用法:

[UnAuthenticatedOnly(RedirectTo = "/Main")]
public ActionResult Login()
{
    // ...
}