繁体   English   中英

现有MVC应用程序中带有Web API的AuthoriseAttribute

[英]AuthoriseAttribute with Web API in existing MVC Application

我有一个现有的MVC应用,其自定义授权属性覆盖System.Web.Mvc.AuthorizeAttribute

现在,我需要将Web API添加到项目中,但只允许访问授权用户。 如果我将自定义授权属性添加到API控制器,它似乎会被忽略,并允许任何人不受限制地访问。

经过一番阅读后 ,我发现要授权用户使用Web API,必须使用authorize属性的System.Web.Http.AuthorizeAttribute版本。

但是,在将Authorize属性的Http版本添加到我的API控制器,并将authorize属性的Mvc版本保留到我的Mvc控制器之后,我对API的请求现在总是返回401-未经授权,即使登录也是如此。

然后,我尝试删除我的自定义[Mvc] authorize属性,而改用标准版本,并遇到相同的问题。

此问题描述了一个类似的问题,并尝试通过合并两个命名空间中的类来解决此问题 对于我来说,这听起来不是一个很好的解决方案,因为我真的不需要自定义API授权属性。

我在这里做错了什么?

如果MVC应用程序与Web API在同一项目中,则只能与MVC基本身份验证共享授权。 如果不是,则必须在Web API中创建CustomAuthorize Attribute(继承http.AuthorizeAttribute)并在WebAPI上实现基本身份验证。 这样,对WebAPI的每个请求都应传递userName并传递HTTP请求的AuthHeader

我认为问题是我试图在服务器端代码中调用API。 (不要问,我知道这听起来不合逻辑)。

显然,服务器端请求不会模拟用户凭据。 我尝试在web.config中设置<Identity Impersonate="true"/> ,但这无效。

为了解决这个问题,我将请求移到了对文档准备就绪的JQuery ajax调用上,我应该首先完成它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM