gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:24:41 27 4
gpt4 key购买 nike

我正在尝试尽可能“按照书本”使用带有 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com