我正在使用WebAPI 2后端构建SPA应用程序。我正在使用新的ASP.NET Identity 2.0进行授权和身份验证。要登录,我调用/ Token URL,它返回我用于后续API调用的令牌。现在一切正常。
现在我需要对登录/身份验证过程进行一些更改,我想在返回令牌之前检查电子邮件是否已确认以及用户是否处于活动状态(两个数据库字段)。但是我无法找到要求授权的方法。我认为这是AccountController中的GetExternalLogin方法,但似乎并非如此。
有人可以告诉我在哪里需要更改登录逻辑吗?
答案 0 :(得分:3)
您需要实现自己的UserStore来实现自己的身份验证逻辑 请参阅This SO question
如果您不希望这样做,请在ApplicationOAuthProvider.cs
中找到此功能GrantResourceOwnerCredentials
。在此行之后
IdentityUser user = await userManager.FindAsync(context.UserName,
context.Password);
你可以挤出一些自定义逻辑,比如
if (IsEmailConfirmed(user) == false)
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}