jai*_*ai1 2 azure-active-directory blazor-server-side
我有一个 Blazor 服务器应用程序 (.net5),它使用 Microsoft.Identity.Web 将用户登录到 AzureAD。这部分一切按预期工作 - 加载应用程序,它会自动获取“Microsoft Signin”对话框。AuthenticationStateTask 还将用户显示为“IsAuthenticated”。我的问题是尝试添加“注销”按钮。
我努力了:
<a href="https://login.microsoftonline.com/common/oauth2/v2.0/logout">Log out</a>
Run Code Online (Sandbox Code Playgroud)
和:
<a href="https://login.microsoftonline.com/{domainID}/oauth2/logout">Log Out</a>
Run Code Online (Sandbox Code Playgroud)
两者都会将我带到 Microsoft“请稍候,我们将您注销”页面,唯一的区别是第一个选项要求“从哪个帐户”注销。在浏览器中按“返回”或再次手动转到站点地址,我会自动以以前的用户身份重新登录。如果我按“注销”,然后手动转到:
/signout-oidc
Run Code Online (Sandbox Code Playgroud)
我得到一个空白页面(我理解是正确的),但然后返回到 Wep 应用程序,我被正确地要求再次登录 - 所以我的假设是回调不会被自动调用。
在我的 appsettings.json 中,我有:
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc",
"RemoteSignOutPath": "/signout-oidc",
Run Code Online (Sandbox Code Playgroud)
以及域和租户等。
在 Azure Web 注册中,我在“前端通道注销 URL”字段中有 /signout-oidc。
我一定错过了一些东西(或者调用了错误的网址?),但是经过几个小时的研究,我无法解决它。
对此的任何帮助将不胜感激,谢谢。
您可以使用如下所示的“注销”按钮,选择Web 应用程序中的“注销”SignOut按钮会触发控制器上的操作AccountController。
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此文档 - https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=aspnetcore#sign -出去
更新:
在 Blazor 中,您可以打开LoginDisplay.razor并更新代码,如下所示。
<AuthorizeView>
<Authorized>
Hello, @context.User.Identity.Name!
<a href="MicrosoftIdentity/Account/SignOut">Log out</a>
</Authorized>
<NotAuthorized>
<a href="MicrosoftIdentity/Account/SignIn">Log in</a>
</NotAuthorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)
示例 - https://github.com/jpda/msiddev-blazor-aad-graph
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |