use*_*911 0 asp.net-mvc-4 asp.net-core
我需要为 ASP.NET Core MVC 中的 REST API 提供一个自定义属性。我想将此属性选择性地添加到我的一些 API 中。此属性根据某些条件检查用户是否可以访问 API,如果无法访问,则抛出 403。我使用过滤器来实现此目的,过滤器的问题是,无论该属性是否添加到我的 API 中,过滤器代码都会执行。我希望仅当此属性添加到 API 时才执行我的过滤器代码。
我的同事建议我应该在这个用例中使用授权策略而不是过滤器。仅当将策略添加到 API 时才会执行。另外,由于我抛出 403,授权策略是更好的选择。我探索了授权策略,但我的问题是我无法将自定义属性传递给授权策略。
例如,我可以使用过滤器和自定义属性来做到这一点。
[MyCustomFeature("param1", "param2")]
Run Code Online (Sandbox Code Playgroud)
我如何在授权策略中做同样的事情?我将此示例用于授权策略。 自定义授权属性asp.net core
看这里。强烈建议从上到下阅读。
总而言之,无论您如何进入基于策略的身份验证系统,策略始终通过单个字符串来解析。因此,为了得到你想要的,你需要:
AuthorizeAttribute,并接受您传入的参数并使用它们生成策略名称字符串。仔细阅读链接文档页面中的“自定义授权属性”示例,了解它实际上如何在策略字符串中存储“Age”的值。涉及的代码并不多,也不是超级复杂,但归结为将东西放入字符串中有点奇怪/尴尬。
| 归档时间: |
|
| 查看次数: |
3381 次 |
| 最近记录: |