c# - Asp.net Identity - 如何在不考虑鉴别器的情况下登录

标签 c# asp.net authentication asp.net-identity discriminator

我使用的是 asp.net 身份,并且我有许多从 IdentityUser 继承的用户类。

假设我有一个像这样的继承链:

IdentityUser <- AppUser <- ServiceUser <- ServiceEmployee 和 ServiceCustomer(均继承自 ServiceUser)。

当尝试创建统一的登录表单时,最好的策略是什么?

如果您使用 OTB 帐户 Controller 并将 UserManager 更改为使用 ServiceUser 但尝试登录注册为 ServiceEmployee 的帐户,它将失败,因为 FindAsync() 显然仅尝试根据鉴别器字段中的“ServiceEmployee”进行查找,因此,如果该帐户注册为不同的“类型”,则无法用于登录。因此,当注册类型与登录类型不同时,任何组合都会发生这种情况。

我应该更新登录操作以使用多个 UserManagers 以便检查每个用户类型还是有更好的方法来实现我想要实现的目标。

感谢您提供任何信息。

最佳答案

您是否考虑过将您的身份用户和您自己的应用程序用户分开?意思是 User 是保存您的身份信息的内容,Person 是您应用程序的其余部分使用的内容(以及其他类型,例如 Employee 继承自)。我自己就是这样做的。我将所有安全/身份信息完全分开(在单独的项目/上下文中)并且只链接我的 UserPerson 实体,这对我来说非常有用 - 更容易维护和更新我的安全模型而不影响我的应用程序的其余部分和(尽可能多)。

关于c# - Asp.net Identity - 如何在不考虑鉴别器的情况下登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907080/

相关文章:

c# - 具有约定的内置依赖注入(inject)

C# WinForms 在新表单中选择 ComboBox 项

.net - 在 VS 2010 中查看工作流程

asp.net-mvc - 为什么AuthorizeAttribute认证授权失败会重定向到登录页面?

java - 将文本字段中的特定字段值与一个值固定的 mysql 列值进行比较

c# - 如何从网页中获取HTML代码?

C# 字符串插值。十进制时使用字符串?一片空白

javascript - ASP.NET - 如何从页面检查用户控件中文本框的值?

c# - MVC3 可选模型属性

asp.net - 更改密码后,从所有浏览器注销用户