如何在MVC Web API中使用身份验证?

Ron*_*ers 5 .net c# asp.net-mvc asp.net-web-api

我正在尝试为另一个MVC站点访问的MVC Web API配置身份验证。我已经在web.config中尝试了很多东西,所以有很多建议。但是,一切都无济于事。

我正在从MVC网站使用以下代码:

var web = new WebClient();
web.UseDefaultCredentials = false;
web.Credentials = new NetworkCredential(username, password);
Run Code Online (Sandbox Code Playgroud)

然后,我使用该Web客户端在仅包含API控制器的另一个MVC站点上调用方法。没有身份验证,一切都会正常进行,但是我无法使身份验证正常工作。发出请求时,我收到一个异常,返回401(如果您问我,这很好,但它似乎没有发送凭据)。

我还尝试将用户名和密码放在URL中,但这也不起作用。

这是Web API站点的web.config文件的相关部分:

    <authentication>
      <forms 
        cookieless="UseUri"
        enableCrossAppRedirects="false">
        <credentials passwordFormat="Clear">
          <user name="site" password="XYZ123!"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
Run Code Online (Sandbox Code Playgroud)

我只想在其中输入一个用户名/密码,以确保它是调用方法的网站。我的API控制器具有btw的“授权”属性。

我的问题是:如何向Web API网站添加身份验证,以便可以使用身份验证在其上调用方法?

Car*_*any 5

使用基本身份验证。您可以创建一个AuthorizationAttribute来验证Authorization标头中的用户名/密码,并在未经授权时返回401响应。

有关更多信息,请参见此帖子