我们有一个.NET Web表单项目,使用我们的网站运行的sql成员身份验证.我们现在正在尝试设置一个Web API 2项目,并希望使用API的用户使用他们的网站凭据来验证他们对API的调用.
>我们是否必须将我们的网站更新为身份验证? …要么
>我们是否可以使用现有的成员身份/表单身份验证来对用户进行身份验证,然后为他们提供可用于后续呼叫的令牌?
在任一情况下,如何实施该方案?
谢谢你的帮助!
最佳答案 >无需升级ASP.NET Identity,您可以使用成员资格提供程序
>您可以使用您的旧会员提供程序来验证用户名和密码,通过查看下面的代码,您需要使用memebership.validate用户方法更改前缀为(**)的代码行,就这样.
您可以在我详细的Token based Authentication Post中了解更多相关信息
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
using (AuthRepository _repo = new AuthRepository())
{
**IdentityUser user = await _repo.FindUser(context.UserName, context.Password);**
if (user == null)
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
}
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}