c# - AzureAD 使用自定义按钮单击
问题描述
您好,我正在尝试使用 azure 活动目录(Blazor 服务器应用程序)进行开发演示。
我的要求:
-> 单击按钮时,它应该重定向到https://login.microsoftonline.com/并且它应该对用户进行身份验证,然后它应该再次重定向到我当前的 blazor 应用程序索引 url。
但是在运行 blazor 应用程序后,它直接重定向到https://login.microsoftonline.com/并且在身份验证页面重定向到我的应用程序之后。
我的代码如下所示:
appSettings.json
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "jpda.onmicrosoft.com",
"TenantId": "aacd4f65-xxxx",
"ClientId": "93134054-xxxx",
"CallbackPath": "/signin-oidc",
"ClientSecret": "I~Uoq5yxxxx"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
登录显示.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>
索引.razor
@page "/"
<div class="top-row px-4 auth">
@if (IsButtonClicked == true)
{
<LoginDisplay />
}
<a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
</div>
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
<button class="btn btn-primary" @onclick="(() => IsButtonClicked = true)">Login</button>
@code{
[Parameter]
public EventCallback<bool> OnButtonClicked { get; set; }
public bool IsButtonClicked { get; set; }
}
我打电话有条件地来自 index.razor 组件的组件,如果单击按钮然后它应该在身份验证页面上调用并重定向。
如果有人有想法请帮助我!提前致谢!
解决方案
当你去天蓝色的时候
应用注册->新应用注册
提供一些有效名称并选择有效租户选项后,您可以看到重定向 URI 选项。将 uri 放在那里很重要,因为一旦注册,您将不得不返回应用程序。url 取决于您的应用程序是什么以及它在本地驻留的位置。
- 之后,当您进行身份验证时,您可以看到您提供的网址,您可以添加更多网址。
2.打开startup.cs。必须有类似下面的内容(下面显示注释行)
- 用下面的代码替换下面的代码代替 services.AddControllersWithViews(...) 以在单击登录按钮时重定向到 login.microsoftonline.com。
public void ConfigureServices(IServiceCollection services)
{
//
//
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddControllersWithViews()
.AddMicrosoftIdentityUI();
services.AddRazorPages();
//
}
3.在 blazor 中,您可以打开index.razor ,打开终端窗口并添加以下 Library =>Microsoft.AspNetCore.Authorization
Code :
> dotnet add package Microsoft.AspNetCore.Authorization
4.您可以打开 index.razor 并添加如下引用。(您可以为您喜欢的需要进行身份验证的视图执行此操作)
(如果您的应用有控制器,您也可以将 [Authorize] 属性添加到控制器中的索引操作,而不是在视图中给予授权)
参考:
推荐阅读
- ios - 无法在 iTunes Store 中创建年度自动续订订阅
- java - JpaPagingItemReader 事务问题:StaleObjectStateException
- excel - 使用 VLOOKUP 时删除 N/A
- c# - 类 PerformanceCounter 文档
- xamarin - 在 Xamarin.Forms 中实现回收单元格网格的最佳方法?
- unit-testing - then Return中如何处理方法的不同返回类型?
- javascript - 禁用将浮动字符粘贴到输入数字字段的可能性
- javascript - 为什么重新加载有一半的时间返回一个空状态?
- google-translate - 谷歌翻译在某些主机上自我屏蔽?
- java - 如何从可以属于两个或多个组的列表中对对象进行分组?