如何实现asp.net-core-mvc中MVC核心对所有操作进行全局权限控制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计546个文字,预计阅读时间需要3分钟。
在MVC+Core中,要强制所有操作全局授权,可以通过配置全局过滤器来实现。以下是如何注册全局过滤器的示例:
csharppublic void ConfigureServices(IServiceCollection services){ services.AddMvc(options=> { options.Filters.Add(new RequireHttpsAttribute()); });}
这个例子中,`RequireHttpsAttribute` 过滤器被添加到全局过滤器列表中,它会强制所有操作通过HTTPS协议进行通信。如果你遇到无法为授权操作添加过滤器的问题,请检查以下几点:
1. 确保 `AddMvc` 调用正确,并且没有错误。
2.检查是否在 `services.AddMvc` 方法中正确地使用了 `options` 参数。
3.如果你在其他地方配置了全局过滤器,确保它们没有被覆盖。
如果你想要全局授权,但无法为特定的操作添加授权过滤器,可能是因为你的授权策略配置有误或存在冲突。在这种情况下,你可能需要检查以下几个方面:
- 确认你的授权策略是否正确设置,并且启用了全局授权。
- 检查是否有其他中间件或过滤器在请求处理流程中影响了授权。- 确保你的操作方法没有使用任何与授权冲突的属性或配置。如果以上步骤都不能解决问题,可能需要更详细地检查你的代码配置和项目设置。
如何强制/设置MVC Core中所有操作的全局授权?我知道如何注册全局过滤器 – 例如我有:
Setup.cs services.AddMvc(options => { options.Filters.Add(new RequireHttpsAttribute()); });
这工作正常,但我无法为授权添加相同的内容:
options.Filters.Add(new AuthorizeAttribute());
我有错误:
无法从’Microsoft.AspNet.Authorization.AuthorizeAttribute()’转换为’System.Type’
(Method .Add()需要IFilterMetadata类型)
我知道 – 从类似的问题 – 这适用于MVC4-5 ……所以必须在MVC Core上改变…
有人有什么想法吗?
services.AddMvc(config => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); });
本文共计546个文字,预计阅读时间需要3分钟。
在MVC+Core中,要强制所有操作全局授权,可以通过配置全局过滤器来实现。以下是如何注册全局过滤器的示例:
csharppublic void ConfigureServices(IServiceCollection services){ services.AddMvc(options=> { options.Filters.Add(new RequireHttpsAttribute()); });}
这个例子中,`RequireHttpsAttribute` 过滤器被添加到全局过滤器列表中,它会强制所有操作通过HTTPS协议进行通信。如果你遇到无法为授权操作添加过滤器的问题,请检查以下几点:
1. 确保 `AddMvc` 调用正确,并且没有错误。
2.检查是否在 `services.AddMvc` 方法中正确地使用了 `options` 参数。
3.如果你在其他地方配置了全局过滤器,确保它们没有被覆盖。
如果你想要全局授权,但无法为特定的操作添加授权过滤器,可能是因为你的授权策略配置有误或存在冲突。在这种情况下,你可能需要检查以下几个方面:
- 确认你的授权策略是否正确设置,并且启用了全局授权。
- 检查是否有其他中间件或过滤器在请求处理流程中影响了授权。- 确保你的操作方法没有使用任何与授权冲突的属性或配置。如果以上步骤都不能解决问题,可能需要更详细地检查你的代码配置和项目设置。
如何强制/设置MVC Core中所有操作的全局授权?我知道如何注册全局过滤器 – 例如我有:
Setup.cs services.AddMvc(options => { options.Filters.Add(new RequireHttpsAttribute()); });
这工作正常,但我无法为授权添加相同的内容:
options.Filters.Add(new AuthorizeAttribute());
我有错误:
无法从’Microsoft.AspNet.Authorization.AuthorizeAttribute()’转换为’System.Type’
(Method .Add()需要IFilterMetadata类型)
我知道 – 从类似的问题 – 这适用于MVC4-5 ……所以必须在MVC Core上改变…
有人有什么想法吗?
services.AddMvc(config => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); });

