我正在学习MVC3,并在我的项目中实现了自己的MembershipProvider和RoleProviders,以利用当前在winforms应用程序登录和访问限制系统中使用的现有数据库表。
一切都按预期工作,但我想我可能在控制器操作的[Authorize]
标签上做错了。
如果我使用这样的东西,限制工作正常:
[Authorize(Roles = "Admin, Purchaser")]
但是角色“管理员”和“购买者”的名称都在我的数据库角色表中,并且我将它们硬编码到此Authorize
标记中似乎“错误”。这意味着如果我在数据库表中添加了一个新角色,那么我必须在相关的位置更改Authorize
标记。
它不像数据库中的角色会经常变化,它对我来说似乎有点'僵硬'。
所以我的问题是,我这样做是否正确?有没有更好的方法,或者它只是在MVC项目中使用该系统的标准方式?
非常感谢。
答案 0 :(得分:0)
是。默认授权模型不灵活。但是,由于您已经拥有自定义RoleProvider
,因此您可以毫不费力地使其变得灵活。
诀窍是在Group
和User
之间使用中间实体Role
。用户属于组,组具有角色。使用此功能,您可以检索特定用户所在的角色,反之亦然。