使用新版本的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身份生成的实体时,如何使新的基于声明的身份受益。
请随意指出正确的方向进行澄清。
答案 0 :(得分:1)
你可以完全创建自己的UserManager,除非你对它的工作原理有很强的了解,否则我不建议你。你可以包装现有的UserManager,让你的应用程序依赖于一个界面,或者直接使用它并从中受益如果您不喜欢EF,您可以创建自己的商店以使用其他数据库。新的ASP.NET身份是可扩展的,我同意有点难,如果你想要完全控制和定制一切,但我建议花时间去了解它的大部分,这样你就可以选择何时使用或不使用。时间足以使用现有的UserManager。
答案 1 :(得分:0)
您希望Microsoft.AspNet.Identity的UserManager执行您的安全部分,这样您的用户就不必相信您可以正确处理安全信息。
Identity.Framework只是身份资料的数据存储,如果你不想要EF,你可以创建自己的商店。我创建了一个只将信息直接存储在xml文件中的文件。但我总是回到使用Identity,因为我不想处理加密并确保我能够及时了解安全部门的内容。