Wel*_*ing 2 c# asp.net-core asp.net-core-2.1
在ASP.NET Core 2.1中,任何人都可以解释其CookieAuthenticationOptions.LogoutPath作用吗?根据说明文件:
如果提供了LogoutPath处理程序,则将根据ReturnUrlParameter重定向到该路径的请求。
但我什至不认为该句子具有适当的语法,因此我对含义感到困惑。
在中Startup.cs,我将其设置为:
// Added after AddMvc()
services.ConfigureApplicationCookie(options =>
{
options.LogoutPath = $"/account/logout";
});
Run Code Online (Sandbox Code Playgroud)
什么时候叫这个?
我是否需要为此GET在AccountControllerView中创建相应的动作?还是POST采取行动?例如:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)我的注销操作是否需要注销用户,或者届时他们是否已经注销?
的 LogoutPath那你可以用cookie认证方案配置是一个奇怪的一个。尽管LoginPath具有直接影响,并且基本上是在挑战cookie身份验证时将最终用户重定向到的URL,但LogoutPath不能直接使用。
取而代之的LogoutPath是,当Cookie身份验证方案注销时,所配置的仅用于验证当前URL。的检查是这样的:
// Only redirect on the logout path
var shouldRedirect = Options.LogoutPath.HasValue && OriginalPath == Options.LogoutPath;
await ApplyHeaders(shouldRedirect, context.Properties);
Run Code Online (Sandbox Code Playgroud)
因此,这基本上检查了 OriginalPath了当前请求的路径是否等于配置的注销路径。如果是这种情况,则该ApplyHeaders调用将重定向到RedirectUri身份验证属性。
这样做的目的是确保仅在访问实际注销URL时才发生重定向回路径的重定向。因此,例如,如果用户单击注销按钮,则他们可能会注销,然后重定向回到其来源。但是,如果他们在其他地方注销,则它们不会自动重定向回,因为只有注销URL被认为是将用户重定向回的安全位置。
同样的逻辑也存在LoginPath。但是存在其他逻辑,即当该方案受到挑战时(例如,当需要通过授权过滤器进行认证时),cookie身份验证方案也将重定向到该URL。
我是否需要在我的帐户中创建相应的GET操作
AccountControllerView中?还是可以采取POST行动?
这取决于您以及您要如何处理注销。为了使上述逻辑运行,您只需要任何对该路由执行操作,因此您还可以执行POST以要求用户执行表单提交以将其注销(以防止通过GET请求意外注销)。
我的注销操作是否需要注销用户,或者届时他们是否已经注销?
SignOutAsync由于这些路由没有隐式处理,因此您将必须自称。就像您还需要在LoginPath,您也需要实现注销逻辑。
配置的路径实际上只是让cookie方案知道那些路由在哪里,但是它们对其行为没有任何影响。