MVC3 和用户管理
Posted
技术标签:
【中文标题】MVC3 和用户管理【英文标题】:MVC3 and User Management 【发布时间】:2011-09-03 09:03:18 【问题描述】:我是 .NET 框架的新手,但在其他基于 MVC 的框架(如 Symfony 和 Zend 框架)方面拥有丰富的经验。
我有一个应用程序,要求研讨会参与者注册,然后选择他们想参加的研讨会,所以我有 3 个模型,即 Workshop、Participant 和 Enrollment,基本上都有 WorkshopID 和 ParticipantID。
在他们注册并选择了他们想要的研讨会后,我如何整合现有的会员资格,或者有没有其他方法可以将 ParticipantID 记录到注册中?使用 Symfony 或 Zend 只需一分钟,但无法弄清楚如何为注册用户和他们的选择搭建脚手架
【问题讨论】:
【参考方案1】:如果您想将您的参与者与会员用户联系起来,最好的方法是在您的参与者表中添加一个 Guid 列 (userId),并将其与aspnet_Users
表上的主键链接。这样,您就可以将域参与者与 ASP.NET 用户联系起来。
【讨论】:
【参考方案2】:正如 Jakub 指出的那样,这是一个业务领域问题。看起来您并不希望围绕我最初假设的 Enrollments 建立脚手架授权。如果你是,那么你会关注 .NET RoleProvider。
这与身份验证和 MembershipProvider 相关联,并提供了一个快速脚手架,可在注册时将用户分组为安全角色,如下所示:
Roles.AddUserToRole(User.Identity.Name, "Workshop");
Roles.RemoveUserFromRole(User.Identity.Name, "Workshop");
将AspNetSqlRoleProvider
与 Sql Server 一起使用,或多或少是开箱即用的,但有一些相关的配置和设置。
但是,对于业务领域,对于用户和注册之间的关联,您将使用唯一的 MembershipUser.ProviderUserKey
(或您自己的抽象)映射一对多,并将注册保留在您自己的架构中。
The Entity Framework 可用于帮助使用代码优先从模型中快速构建数据库架构。
【讨论】:
-1 - 我认为将安全性(角色)与应用程序域(研讨会)混合是一个错误的决定。正确的做法是创建相关的数据库表(研讨会、参与者和链接器) 我同意-但这确实取决于分组的意图-他很可能正在寻找基于安全的解决方案,因为问题专门询问了会员资格,这是一个有效的方案-我试图提供用于分组用户的快速 .NET 脚手架类比。如果意图是针对业务领域,那么不,它不适合。实际上重新阅读这个问题确实看起来更像是一个业务领域问题。事实上,我会更新我的答案。 感谢大家让我大开眼界,我想我是带着过去在其他框架中实现解决方案的心态来处理这个问题的。以上是关于MVC3 和用户管理的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC3 角色和权限管理 -> 使用运行时权限分配
System.DirectoryServices & IIS - 获取用户名
当用户在 asp.net mvc3 中未授权时重定向到另一个页面