gpt4 book ai didi

asp.net - 如何在 ASP.NET Core 中自定义/覆盖 User.IsInRole

转载 作者:行者123 更新时间:2023-12-04 01:51:37 24 4
gpt4 key购买 nike

我是 ASP.NET Core 的新手,我在 Controller 的 User 属性(在 ClaimsPrincipal 类中)中看到,它有 User.IsInRole 方法,所以我如何覆盖它以调用我的服务依赖项并在我的应用程序中注册(我不想使用扩展方法)。

最佳答案

您可以使用 ClaimsTransformation:

public class Startup
{
public void ConfigureServices(ServiceCollection services)
{
// ...
services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
}
}

public class CustomClaimsPrincipal : ClaimsPrincipal
{
public CustomClaimsPrincipal(IPrincipal principal): base(principal)
{}

public override bool IsInRole(string role)
{
// ...
return base.IsInRole(role);
}
}

public class ClaimsTransformer : IClaimsTransformation
{
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
var customPrincipal = new CustomClaimsPrincipal(principal) as ClaimsPrincipal;
return Task.FromResult(customPrincipal);
}
}
Controller 方法:
[Authorize(Roles = "Administrator")]
public IActionResult Get()
{
// ...
}
通过 Authorize 属性检查角色将使用您覆盖的 IsInRole 方法

关于asp.net - 如何在 ASP.NET Core 中自定义/覆盖 User.IsInRole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com