2

そのオーバーライドされた 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);
    }
}

なぜ - ユーザーがログインしていない場合 - 応答はそのメソッドに再度リダイレクトされます。なんで ?

4

1 に答える 1

3

これはおそらく、リダイレクト先のコントローラー アクション (ログイン URL だと思います) もこの属性で装飾されているためです。したがって、ユーザーが認証されていない場合、ログイン アクションにリダイレクトされ、認証されていないため、ログイン アクションにリダイレクトされます。個人的には、[Authorize]このようなアクション フィルターを記述する代わりに、属性を使用することをお勧めします。

于 2011-05-13T09:58:24.797 に答える