11

有了新版本的 VS 2013 RTM 和 asp.net mvc 5.0,我决定尝试一些东西......

不用说,发生了很多变化。例如,新的是旧的和(较旧的)APIASP.NET Identity的替代品。MembershipSimpleMembership

在我之前构建的所有应用程序中,我从来没有机会使用 Membership 或 SimpleMembership。我总是最终创建自己的Login()方法,将提交的 ViewModel 转换为 POCO(使用 automapper),然后使用某种存储库来查找用户和密码。

作为回报,我将获得一个用户 POCO,该用户 POCO 稍后将被转换(使用自动映射器)为更小的 UserSession POCO。较小的 UserSession 将放置在 Session 中。

当然,我仍然会使用FormsAuthentication创建一个Encrypted TicketFormsAuthentication.SignOut()在用户想要注销时使用。

但我从未充分利用所Membership (or SimpleMembership)提供的东西。

我从来没有让我的 POCO 实现某种接口,也不必在我的 POCO 类库中添加对 Microsoft 库的引用。换句话说,我从来没有对任何事物产生过强烈的依赖。

我的问题如下:

通过我看到的示例,我不断看到新的 ASP.NET 标识创建(首先通过代码)一些表和字段。例如,该AspNetUsers表将一个Id字段保存为string. 当然,我确信有办法克服这个问题,并且最终会看到示例,但为什么会有人NOT want to build pure POCO classes完全控制事物的创建内容和方式呢?

除非我很困惑(很有可能),否则谁能解释我为什么要使用新的 ASP.NET Identity API(或更重要的是,使用新的Microsoft.AspNet.Identity.EntityFramework)来创建我的表?

想要Pros and Cons使用它而不是 POCO 风格的东西是什么?

也许我应该在另一个问题中提出这个问题,但我也试图了解如何在使用 POCO 而不是使用 ASP.NET 身份生成的实体时使新的基于声明的身份受益。

请随时为我指出正确的方向以进行澄清。

4

2 回答 2

1

您可以完全创建自己的 UserManager,除非您对它的工作原理有深入的了解,否则我不建议您这样做。您可以包装现有的 UserManager 并使您的应用程序依赖于一个接口,或者直接使用它并从微软拥有的东西中受益把它放进去。如果你不喜欢 EF,你可以创建自己的商店来使用另一个数据库。新的 ASP.NET 标识具有足够的可扩展性,我同意如果您想完全控制和自定义所有内容,这有点困难,但我建议您花时间了解其中的大部分内容,以便您可以选择何时使用或不使用。大部分使用现有的 UserManager 就足够了。

于 2014-11-05T12:19:15.220 回答
0

您希望 Microsoft.AspNet.Identity 的 UserManager 执行您的安全部分,这样您的用户就不必相信您可以正确处理您的安全信息。

Identity.Framework 只是 Identity 的数据存储,如果您不想要 EF,您可以创建自己的存储。我创建了一个直接将信息存储在 xml 文件中的文件。但我总是回到使用身份,因为我不想处理加密并确保我了解安全部门的最新信息。

于 2014-02-04T16:58:10.310 回答