如果用户在应用程序中进行身份验证,如何在Web Api上授权用户

时间:2015-04-14 06:21:55

标签: c# asp.net-mvc authentication asp.net-web-api asp.net-mvc-5.2

我有一个带有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],但它不是接缝工作。

看起来我必须使用此this执行与library类似的操作 你有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我没有看到将MVC和Web API中的身份验证/授权过滤器放入单个过滤器的好方法,因为它们具有非常不同的行为。对于用户未通过授权的MVC请求,您希望将它们重定向到另一个页面,以便以其他用户身份登录,或者只是让他们知道他们无权访问该页面。对于用户授权失败时的Web API请求,您希望发送一个HTTP状态代码,指示授权失败并让客户端处理它。