joe*_*dev 12 .net asp.net entity-framework entity-framework-6 asp.net-identity
我正在使用一个新网站的ASP.NET身份,似乎没有很多(任何?)示例如何以分离的方式执行此操作.我不希望我的域模型的DomainUser类必须继承Microsoft.AspNet.Identity.EntityFramework.User,所以我创建了一个如下所示的类:
public class IdentityUser : User
{
public virtual DomainUser DomainUser { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经将DbSetASP.NET Identity所需的s 移动到与DbContext我的域模型相同的派生类中,如本答案所示.我将IdentityUser单向链接到DomainUservia Fluent API,如下所示:
modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();
Run Code Online (Sandbox Code Playgroud)
这使我可以将授权和身份验证的关注点与DomainUser类中定义的行为分开.这比将它们组合成一个类更好,但它仍然感觉很难看.我仍然在我的Domain项目中引用了所需的ASP.NET Identity程序集.我可以创建另一个项目,该项目仅包含我的IdentityUser类和对我的域程序集的引用以允许导航属性,但这开始让人感到困惑.
我觉得应该有更好,更清晰,更模块化的方式将身份链接到域,而不会导致紧密耦合.
有没有人想出更好的处理方法?我希望能引起参与ASP.NET身份项目(Hao Kung等人)的人们的注意,为此提供方向.
事实上,如果您要从 IdentityUser 继承,则 ASP.NET Identity 相关程序集也会随之而来。您无法将 Identity 与 ASP.NET 分开。IdentityUser问题中的原始示例不会给您带来太大帮助 - 在大多数情况下,如果您要IdentityUser在域项目中使用,您可能最好继承自。
如果您的域项目确实需要摆脱 ASP.NET 相关程序集,那么您可以将与 Identity 相关的类保留在您的 Web 项目中,并User在您的域项目中创建一个单独的模型,并以编程方式链接这两个模型,如此处建议的那样。
| 归档时间: |
|
| 查看次数: |
2531 次 |
| 最近记录: |