我有重写的 OnActionExecuting 方法(如果用户登录,则在操作执行之前检查)
public class AuthenticationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
string redirectUrl = string.Format("?returnUrl={0}", filterContext.HttpContext.Request.Url.PathAndQuery);
filterContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl + redirectUrl, true);
}
else
base.OnActionExecuting(filterContext);
}
}
为什么 - 如果用户未登录 - 响应会再次重定向到该方法。为什么 ?
这可能是因为您重定向到的控制器操作(我认为是登录 URL)也用此属性装饰。因此,如果用户未经过身份验证,他将被重定向到登录操作,并且由于他未经过身份验证,他会被重定向到登录操作,依此类推。我个人建议您使用[Authorize]
属性而不是编写这样的动作过滤器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)