POCO使用新的ASP.NET Identity和MVC 5.0 +基于声明的身份

时间:2013-10-31 19:39:23

标签: identity claims-based-identity asp.net-mvc-5

使用新版本的VS 2013 RTM和asp.net mvc 5.0,我决定尝试一些......

毋庸置疑,已经发生了很多变化。例如,新的ASP.NET Identity可替代旧的Membership和(较旧的)SimpleMembership API。

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

作为回报,我将获得一个用户POCO,稍后将其转换(使用automapper)到较小的UserSession POCO。较小的UserSession将放在Session中。

当然,当用户想要注销时,我仍会使用FormsAuthentication创建Encrypted Ticket并使用FormsAuthentication.SignOut()

但我从来没有完全利用Membership (or SimpleMembership)提供的东西。

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

我的问题如下:

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

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

想要使用这个而不是POCO风格的Pros and Cons是什么?

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

请随意指出正确的方向进行澄清。

2 个答案:

答案 0 :(得分:1)

你可以完全创建自己的UserManager,除非你对它的工作原理有很强的了解,否则我不建议你。你可以包装现有的UserManager,让你的应用程序依赖于一个界面,或者直接使用它并从中受益如果您不喜欢EF,您可以创建自己的商店以使用其他数据库。新的ASP.NET身份是可扩展的,我同意有点难,如果你想要完全控制和定制一切,但我建议花时间去了解它的大部分,这样你就可以选择何时使用或不使用。时间足以使用现有的UserManager。

答案 1 :(得分:0)

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

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