我知道如果我有一个方法而我只想Authenticated
使用它我可以用它来标记:
[Authorize]
如果我有一个方法,我希望authorized
和non authorized
人都使用它,我可以用以下方法标记方法:
[AllowAnonymous]
如果我的方法只有Anonymous users
可以使用,not Authenticated users
我该怎么做?
答案 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()
{
// ...
}