微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-core – 基于策略的授权可以更加动态吗?

Net Core政策授权,但对我来说看起来非常不稳定.因为在企业应用程序中,通常需要新的角色,这些角色需要新策略(据我所知)或者您希望实现特定于某个客户端的新类型的策略.例如,如果我们正在构建一个由这些策略驱动的CMS,我们希望每个客户能够定义他自己的策略.那么这个新的政策基础机制能否更具活力,或者它的想法完全不同?

谢谢 :))

解决方法

我总是建议人们看看@ least privilege repo,因为它有一些很好的例子,可以用新的ASP.NET核心认证和授权范例采用各种方法.

Can this new policy base mechanism be more dynamic?

是的,实际上它比以前基于角色的概念更具动态性.它允许您定义可以由数据驱动的策略. Here是另一个有关此细节的重要资源.例如,您可以指定API入口点受策略保护(例如),该策略可以有一个处理程序,该处理程序可以执行任何需要的操作,即;在上下文中检查当前用户,将声明与数据库中的值进行比较,比较角色,确实是什么.考虑following

使用策略定义入口点

[Authorize(Policy = "DataDrivenExample")]
public IActionResult GetFooBar()
{
    // Omitted for brevity...
}

使用添加策略的选项添加授权.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();    
    services.AddAuthorization(options =>
    {
        options.AddPolicy("DataDrivenExample",policy => 
                          policy.Requirements.Add(new DataDrivenRequirement()));
    });    
    services.AddSingleton<IAuthorizationHandler,DataDrivenHandler>();
}

然后定义处理程序.

public class MinimumAgeHandler : AuthorizationHandler<DataDrivenRequirement>
{
    protected override void Handle(AuthorizationContext context,DataDrivenRequirement requirement)
    {
        // Do anything here,interact with DB,User,claims,Roles,etc.
        // As long as you set either:
        //    context.Succeed(requirement);
        //    context.Fail();
    }
}

Is the idea entirely different?

它应该与您在auth8和authz中习惯的先前概念非常相似.

原文地址:https://www.jb51.cc/aspnet/251726.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐