我正在尝试为我的BaseController执行自定义策略。此策略的目的是防止在每个其他控制器中重复代码。
services.AddAuthorization(options =>
{
options.AddPolicy("PolicyName", policy =>
{
policy.AddRequirements(*INSERT POLICY HERE*);
});
});
我尝试在Startup.cs的 ConfigureServices 方法中添加这样的策略
捕获的是什么?
我想在我的政策中访问会话,因为我在计算中需要它。我使用依赖注入 IHttpContextAccessor 。
来做到这一点问题出现在 INSERT POLICY HERE 部分。因为我(我从网上看到的)应该这样做:new MyPolicy()
但这不起作用,因为它需要IHttpContextAccessor
。
如何将其传递到政策中?如果有更好的方法,请随时分享
答案 0 :(得分:0)
您在网上看到的示例已经过简化,但您不必将策略和要求放在同一个类中。要求基本上是数据 - 例如年龄要求将保持您希望检查的年龄。因此,将需求分离到自己的类中,然后您可以在没有DI问题的情况下将其新建,并且将根据需要通过DI容器新建策略。