c# - ASP.NET Identity 2.0 中基于 token 的登录逻辑更改

标签 c# asp.net .net asp.net-web-api asp.net-identity

我正在使用 WebAPI 2 后端构建 SPA 应用程序。我正在使用新的 ASP.NET Identity 2.0 进行授权和身份验证。为了登录,我调用/Token URL,它返回我用于后续 API 调用的 token 。现在这一切都运行良好。

现在我需要对登录/身份验证过程进行一些更改,在返回 token 之前我想检查电子邮件是否已确认以及用户是否处于事件状态(两个数据库字段)。但我无法找到正在调用哪个方法来进行授权。我以为是AccountController中的GetExternalLogin方法,但似乎不是这样。

有人可以告诉我哪里需要更改登录逻辑吗?

最佳答案

您将需要实现自己的 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;
}

关于c# - ASP.NET Identity 2.0 中基于 token 的登录逻辑更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107734/

相关文章:

c# - ValueTypes 会导致 GC 吗?

c# - 如何在 Entity Framework 中插入/更新主从?

c# - 是否可以向部分类中的属性添加属性?

c# - 如何让 WinForms 应用程序进入全屏模式

c# - 带连接的 linq 查询

c# - 将数据从服务发送到其他 Activity 的 BroadcastReceiver (Xamarin Android)

jquery - 将对象数组发送到 WCF

javascript - 将日期选择器值设置为特定页面

.net - 在 Xamarin.Forms 中指定默认按钮

.net - 关于如何将数据流式传输到服务器 .NET 的最佳实践