【问题标题】:How to move MVC 5 IdentityModels.cs into a separate assembly如何将 MVC 5 IdentityModels.cs 移动到单独的程序集中
【发布时间】:2013-12-12 05:13:56
【问题描述】:

我想知道是否有人遇到了我在尝试将 ApplicationUser 移动到模型项目(所有其他模型所在的模型,包括与用户表相关的模型)时遇到的问题。

我的测试 MVC 5 解决方案包含一个 Web 项目和两个类库:一个用于数据访问层 (DAL),另一个用于模型。我在所有三个项目中都引用了 AspNet.Identity.EntityFramework。 在我的 DAL 类中,我实现了存储库模式和 UnitOfWork。 UnitOfWork 扩展IdentityDbContext<ApplicationUser>。 ApplicationUser : IdentityUser 在 Models 类库中。

在我的 Web 项目中,UnitOfWork 是使用 Autofac DI 实例化的。 对于常规控制器,我定义了一个从 Controller 继承的基类,并将 IUnitOfWork 作为构造函数中的参数。所有控制器都继承自我的自定义基本控制器。 我遇到了AccountController 的问题。它有两个构造函数:一个没有参数,似乎实例化了ApplicationDbContext,另一个将 UserManager 作为参数。

无参数构造函数给了我最大的痛苦。我尝试了很多事情:让 accountcontroller 从我的自定义基本控制器继承,然后尝试从 Controller 类继承它。充其量我成功地编译了我的解决方案,但是当我测试应用程序并填写用户注册表单时,我收到“对象未实例化”消息。当我调试时,我看到AccountController 中的第二个构造函数被调用但UserManager 在那里为空。

有什么想法吗?我真的很感谢有人对此提出明智的意见。

【问题讨论】:

    标签: asp.net-mvc authentication identity asp.net-mvc-5


    【解决方案1】:

    看看SimpleSecurity Project。该项目将 ASP.NET 身份与 Web 应用程序分离,并放入 ApplicationUser into an assembly separate from the web application。这个项目还有一个使用 SimpleMembership 的版本。对于 ASP.NET Identity,请查看 AspNetIdentity 文件夹。安全功能的程序集位于 AspNetIdentity/SimpleSecurity.AspNetIdentity 中,参考 Web 应用程序位于 AspNetIdentity/SimpleSecurity.AspNetIdentity/RefApp 中。

    【讨论】:

    • 凯文,感谢您的快速回复。顺便说一句,我是你博客的忠实粉丝。
    • 我查看了项目,发现 ApplicationUser 模型被移动到一个单独的程序集中。我的困惑在于 AccountController.cs。看起来 AspNetIdentity/SimpleSecurity.AspNetIdentity.RefApp 中的参考应用程序仍然使用 WebSecurity API。我希望能够在我的网络应用程序中使用 UserManager。希望你对此有一些想法。
    • WebSecurity API 只是我为封装 ASP.NET 身份特性而开发的一个外观类。我制作 API 模仿 WebSecurity 的原因是我可以将它插入到以前使用 SimpleMembership 的应用程序中,而无需进行任何更改。例如,如果您在simplesecurity.codeplex.com/SourceControl/latest#AspNetIdentity/… 此处查看WebSecurity 的实现并查看ValidateUser 方法,它正在使用UserManager。
    • 谢谢凯文。您的代码示例帮助我找出了问题所在。
    • 我错了还是这个示例没有将 ApplicationUser 保留在 Models 项目中?我在一个程序集中看到 ApplicationUser,但在另一个程序集中看到模型。
    猜你喜欢
    • 2012-08-28
    • 2023-03-19
    • 1970-01-01
    • 2010-09-06
    • 2018-04-26
    • 2015-11-29
    • 1970-01-01
    • 2016-10-10
    相关资源
    最近更新 更多