自定义策略

时间:2015-11-24 11:23:36

标签: c# asp.net asp.net-core

我正在尝试为我的BaseController执行自定义策略。此策略的目的是防止在每个其他控制器中重复代码。

services.AddAuthorization(options =>
{
    options.AddPolicy("PolicyName", policy =>
    {
        policy.AddRequirements(*INSERT POLICY HERE*);
    });
});

尝试在Startup.cs的 ConfigureServices 方法中添加这样的策略

捕获的是什么?

我想在我的政策中访问会话,因为我在计算中需要它。我使用依赖注入 IHttpContextAccessor

来做到这一点

问题出现在 INSERT POLICY HERE 部分。因为我(我从网上看到的)应该这样做:new MyPolicy()

但这不起作用,因为它需要IHttpContextAccessor

如何将其传递到政策中?如果有更好的方法,请随时分享

1 个答案:

答案 0 :(得分:0)

您在网上看到的示例已经过简化,但您不必将策略和要求放在同一个类中。要求基本上是数据 - 例如年龄要求将保持您希望检查的年龄。因此,将需求分离到自己的类中,然后您可以在没有DI问题的情况下将其新建,并且将根据需要通过DI容器新建策略。