ASP.NET Web API 5.2.3能否通过web.config全局授权及与MVC共用配置?
关于ASP.NET MVC嵌入Web API的授权问题解答
嘿,我来帮你逐个理清这些问题:
1. web.config的节点能控制Web API的全局授权吗?
答案是不能。这个<authorization>节点是给ASP.NET MVC或传统Web Forms用的URL级授权机制,Web API并不识别它。要给Web API设置全局的角色授权,正确的做法是在Web API的配置中添加全局授权过滤器,这样所有控制器/动作都会默认应用这个授权规则,后续修改角色只需要改这一处即可。
示例代码(在WebApiConfig.cs中):
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // 全局添加admin角色的授权过滤器 config.Filters.Add(new AuthorizeAttribute { Roles = "admin" }); // 其他Web API路由配置... config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
如果有个别控制器/动作需要跳过这个全局授权,只需要在对应的类或方法上添加[AllowAnonymous]特性即可。
2. MVC和嵌入的Web API是否共用同一web.config?
是的,它们属于同一个项目,自然共用同一个web.config文件。不过要注意,两者的授权机制是分开的:MVC可以用web.config的<authorization>节点或者自己的[Authorize]特性,而Web API的授权完全依赖自身的过滤器或特性配置,和MVC的授权配置互不干扰。
3. 关于官方文档的说明
虽然没法直接给你链接,但你可以在微软官方文档平台搜索“ASP.NET Web API 5.2 Authorization”,就能找到对应版本的详细授权指南,里面会明确讲解Web API的授权机制、全局过滤器配置等内容,比靠web.config控制要更可靠和灵活。
内容的提问来源于stack exchange,提问作者Arkadiusz Bednarowski
相关产品推荐
相关产品推荐

