我有一个带有webapi控制器的MVC应用程序。
当用户被授权时,他可以访问应用程序中的所有mvc [Authorize]
控制器操作。但由于某种原因,当我在位于我的应用程序[Authorize]
上的WebApi控制器上设置属性authenicated
时,用户无法访问此WebApi操作,服务器返回用户401 Unauthorized
[Authorize]
public class FilesController : ApiController
通过研究i found out,WebApi的[Authorize]
属性实际上是System.Web.Http.AuthorizeAttribute
,而对于mvc控制器,它是System.Web.Mvc.AuthorizeAttribute
。
如果用户在mvc>中获得授权,是否有办法设置应用程序?控制器级别,所以他也将获得webapi的授权?
我尝试将WebApi属性更改为[System.Web.Mvc.Authorize]
,但它不是接缝工作。
答案 0 :(得分:0)
我没有看到将MVC和Web API中的身份验证/授权过滤器放入单个过滤器的好方法,因为它们具有非常不同的行为。对于用户未通过授权的MVC请求,您希望将它们重定向到另一个页面,以便以其他用户身份登录,或者只是让他们知道他们无权访问该页面。对于用户授权失败时的Web API请求,您希望发送一个HTTP状态代码,指示授权失败并让客户端处理它。