Asp.net mvc 3 MVC项目中的Web API(身份验证)
我有一个ASP.NET MVC项目,并使用带有ASP.NET标识的表单身份验证(cookiebase)。我在那个项目中添加了WebAPI控制器。现在我想要的是,对于MVC项目,它应该使用Cookie进行表单身份验证,但是对于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
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())中添加此选项;