我需要在我的ASP.Net核心应用程序中实现从azure广告的单点登录。我有下面的代码,但每当我点击“注销”时,网页就会发布一个GET,但它从未命中我的控制器来返回视图。我在azure中的注销url是正确的。这是我的初创公司:
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
// single-signout removing cookie
options.ConsentCookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.TokenValidationParameters.ValidateIssuer = true;
//login path
options.CallbackPath = "/Account/LoginCompleted";
options.RemoteSignOutPath = "/Account/Logout";
});这是我的控制器:
public IActionResult LoginCompleted()
{
ViewResult viewResult = View();
return viewResult;
}
public IActionResult Logout()
{
return View();
}发布于 2019-09-18 01:35:00
远程注销路径是在iframe中打开的,并不意味着显示视图。它应该删除用户的登录cookie,或者以另一种方式注销用户。
这是我关于单点登出的文章:https://joonasw.net/view/aad-single-sign-out-in-asp-net-core
您的注销操作应返回一个SignOutResult。因此,例如
return SignOut(); //Sign out of default scheme您还可以指定cookie方案名称(如果不是默认名称)。
发布于 2019-09-18 02:42:06
我发现当将以下内容放入视图中时,它可以正常工作:
<a asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a>https://stackoverflow.com/questions/57978967
复制相似问题