entity-framework - 简单成员资格提供程序 - Entity Framework 和角色

标签 entity-framework simplemembership

我正在尝试尽可能“按照书本”使用带有 MVC 4 的简单成员资格提供程序。这是当前的情况:

-- 我一直在使用 Jon Galloway 关于该主题的博客文章 here .

1)我知道这个东西是通过 Entity Framework 连接的。然而,我确实注意到,当我向 UserProfile 类添加属性时,它们在生成时并没有自动出现在表中。这是因为数据库已经生成(表不存在)吗?我手动添加了字段,它可以正常工作,但很高兴知道会导致字段无法自动创建的“陷阱”。

2)就角色而言,它似乎主要面向全局权限类型(即用户是用户、管理员等)。如果您想让它在项目级别处理(即项目1的管理员,项目2的用户),需要进行哪些修改?

等等)是否有一篇文章真正详细介绍了如何扩展它的最佳实践?

最佳答案

1)我发现简单成员(member)资格的 UserProfile 表部分有点复杂(以一种好的方式),但它对我的应用程序非常有用。

简单成员资格的约定是创建一个名为“UserProfile”的 UserProfile 表,其中包含两个字段:UserId 和 UserName。您可以通过修改 Filters/InitializeSimpleMembershipAttribute.cs 中的 WebSecurity.InitializeDatabaseConnection() 行来为 UserProfile 配置不同的表名称或不同的 UserId 和 UserName 字段名称。您可以创建一个包含附加字段的 UserProfile 表,如果 Simple Membership 在第一次运行时找到该表,则 Simple Membership 将使用该表。在默认配置下,应用程序第一次运行 SimpleMembership 将创建数据库表,包括 Filters/InitializeSimpleMembershipAttribute.cs 中指定的任何 UserProfile 表详细信息。

因此,技巧是在第一次调用 Simple Membership 之前创建您想要的 UserProfile 表(包括该表中您想要的所有字段)。这可以由 EF 迁移创建,也可以由数据库脚本创建,甚至可以在 SSMS 中手动创建。

如果您想深入了解简单成员(member)代码,请参阅 http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/WebSecurity.cshttp://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleMembershipProvider.cs .

2)我同意你关于角色和全局权限的观点。也许您可以使用 AddUsersToRoles 和 RemoveUsersFromRoles (在 http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleRoleProvider.cs 中)根据用户使用的项目在登录时修改用户的角色。

等)我不知道有一篇关于扩展简单成员资格的好文章,但原则上简单成员资格扩展了扩展成员资格提供程序,而扩展成员资格提供程序又扩展了 ASP.NET 成员资格提供程序。您应该能够在适当的时候介入。

编辑回应罗伯特的评论:

作为对为什么 Entity Framework 没有创建添加到 UserProfile 类的列的直接答案,当在运行特定于应用程序的表创建之前已经通过 SimpeMembership 初始化创建了 UserProfile 表时,就会发生这种情况。原因是 SimpleMembership 有一个 UserProfile 表的内置定义,SimpleMembership 创建该表时会使用该表。 UserProfile 表创建的时机很重要,因此需要确保在 SimpleMembership 初始化运行之前创建应用程序特定的表。

关于entity-framework - 简单成员资格提供程序 - Entity Framework 和角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14711622/

相关文章:

c# - 在带有 Entity Framework 的 ViewModel 上使用 DependencyProperty

mysql - 未解析成员 'MySql.Data.MySqlClient.MySqlException,MySql.Data, Version=6.9.9.0,

asp.net-mvc-4 - MVC 4 Simplemembership 与 Session 的混淆

asp.net-mvc - simplemembership "remember me"登录失败

c# - Entity Framework 和类

asp.net-mvc - Entity Framework 和MVC

c# - OData over Web API - 如何查询嵌套属性?

asp.net-mvc-4 - ASP.Net MVC 4 和 WebSecurity - 通过电子邮件确认用户注册

asp.net-mvc-4 - 新的 MVC 4 Internet 模板中使用 simplemembership 进行基于角色的身份验证

c# - SimpleMemberShipProvider,将多个 PropertyValue 与自定义数据库表一起使用