Mar*_*aro 4 c# asp.net-core blazor
在 blazor 页面中,如果用户有特定策略,我想(显示/隐藏/设置为只读/更改样式...等)文本框,以便实现(显示和隐藏)我执行了以下操作:
<AuthorizeView Policy="CanReadNamePolicy">
<Authorized Context="test">
<inputText @Bind-Value="@Name"/>
</Authorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)
但问题是我必须对每个策略重复此操作,如果同一用户位于多个策略中怎么办
所以我想将此逻辑移至后面的代码并使用属性来设置文本框,但我无法找到在后面的代码中进行授权检查的方法
所以我应该有这样的东西
if ((await Authorize("PolicyName")).Succeeded)
{
ReadOnlyAttr = "readonly";
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在代码后面执行授权检查的任何想法
这是一个代码片段,您可以如何做到这一点:
如果应用程序需要检查授权规则作为过程逻辑的一部分,请使用 Task 类型的级联参数来获取用户的 ClaimsPrincipal。任务可以与其他服务(例如 IAuthorizationService)相结合来评估策略。
@inject IAuthorizationService AuthorizationService
<button @onclick="@DoSomething">Do something important</button>
@code {
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }
private async Task DoSomething()
{
var user = (await authenticationStateTask).User;
if ((await AuthorizationService.AuthorizeAsync(user, "CanReadNamePolicy"))
.Succeeded)
{
// Perform an action only available to users satisfying the
// 'CanReadNamePolicy' policy.
}
}
}
Run Code Online (Sandbox Code Playgroud)
笔记:
@bind-Value不是@Bind-Value| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |