我正在编写一个示例应用程序。利用 OWIN 和 UseCookieAuthentication 。后者接受 CookieAuthenticationOptions ,它具有 LogoutPath 属性。此属性具有以下关联注释:



但是,我无法弄清楚这是否有任何作用,或者它是否只是代表您的代码将执行某些操作的隐式约定。例如,如果我利用 AuthenticationManager.SignOut() ,我希望 logout-path 端点会被调用。

最佳答案

查看 Microsoft.Owin.Security 的反编译代码,如果指定了 LogOutPath ,它会尝试执行重定向。它将重定向到查询字符串中的 returnUrl 参数。所以再总结一下。



有用的功能可能是,您注销并希望重定向回现在对匿名用户具有降级功能的同一页面。

    bool shouldLoginRedirect = num1 != 0;
        int num2;
        if (shouldSignout)
        {
          PathString logoutPath = this.get_Options().LogoutPath;
          // ISSUE: explicit reference operation
          if (((PathString) @logoutPath).get_HasValue())
          {
            num2 = PathString.op_Equality(((AuthenticationHandler) this).get_Request().get_Path(), this.get_Options().LogoutPath) ? 1 : 0;
            goto label_22;
          }
        }
        num2 = 0;
label_22:
        bool shouldLogoutRedirect = num2 != 0;
        if ((shouldLoginRedirect || shouldLogoutRedirect) && ((AuthenticationHandler) this).get_Response().get_StatusCode() == 200)
        {
          string str = ((AuthenticationHandler) this).get_Request().get_Query().Get(this.get_Options().ReturnUrlParameter);
          if (!string.IsNullOrWhiteSpace(str) && CookieAuthenticationHandler.IsHostRelative(str))
            this.get_Options().Provider.ApplyRedirect(new CookieApplyRedirectContext(((AuthenticationHandler) this).get_Context(), this.get_Options(), str));
        }
      }

关于c# - LogoutPath 有什么作用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29785252/

10-13 08:05