Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC项目中的Web API(身份验证)_Asp.net Mvc 3_Asp.net Mvc 4_Asp.net Web Api_Asp.net Identity - Fatal编程技术网

Asp.net mvc 3 MVC项目中的Web API(身份验证)

Asp.net mvc 3 MVC项目中的Web API(身份验证),asp.net-mvc-3,asp.net-mvc-4,asp.net-web-api,asp.net-identity,Asp.net Mvc 3,Asp.net Mvc 4,Asp.net Web Api,Asp.net Identity,我有一个ASP.NET MVC项目,并使用带有ASP.NET标识的表单身份验证(cookiebase)。我在那个项目中添加了WebAPI控制器。现在我想要的是,对于MVC项目,它应该使用Cookie进行表单身份验证,但是对于API,它应该使用令牌库,我如何配置它 问候,, Imran Ahmad首先安装这些NuGet软件包 1.Install-Package Microsoft.AspNet.WebApi.Owin 2.Install-Package Microsoft.Owin.Host.Sy

我有一个ASP.NET MVC项目,并使用带有ASP.NET标识的表单身份验证(cookiebase)。我在那个项目中添加了WebAPI控制器。现在我想要的是,对于MVC项目,它应该使用Cookie进行表单身份验证,但是对于API,它应该使用令牌库,我如何配置它

问候,,
Imran Ahmad首先安装这些NuGet软件包

1.Install-Package Microsoft.AspNet.WebApi.Owin

2.Install-Package Microsoft.Owin.Host.SystemWeb

3.Install-Package Microsoft.Owin.Security.OAuth

然后,项目必须具有StartUp.cs文件。
将此代码添加到您的文件中

    OAuthAuthorizationServerOptions OAuthOptions = new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true,
        TokenEndpointPath = new PathString("/api/token"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(2),                
        Provider = new AuthorizationServerProvider()
    };

    // To Generate token
    app.UseOAuthAuthorizationServer(OAuthOptions);
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
将此代码添加到新的AuthorizationServerProvider.cs文件

public class AuthorizationServerProvider: OAuthAuthorizationServerProvider
{
     public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
     {
         context.Validated();
     }

     public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
     {
         var identity = new ClaimsIdentity(context.Options.AuthenticationType);
         context.Validated(identity);
     }
}
您可以通过发布到端点,使用Postman API客户端测试代码

yourwebsite/api/token 
连同
grant\u在
x-www-form-Urlencoded
邮差标签

您将获得访问令牌的响应,将此访问令牌放入头中,同时调用
资源
控制器


有关更多参考,请参阅。

我认为是用于令牌基身份验证,但我希望同时存在身份验证,例如使用Cookie的表单身份验证和令牌基身份验证。在这种情况下,表单身份验证如何?好的,您的意思是说您希望使用cookie或令牌身份验证调用API控制器。如果您计划同时使用这两种身份验证,那么MVC cookie将与API控制器一起工作,您只需使用Authorize属性修饰API控制器。在Startup.cs-app.UseCookieAuthentication(新的CookieAuthenticationOptions())中添加此选项;