ASP.NET MVC3自定义RoleProvider和Authorize标记

时间:2012-08-13 08:26:00

标签: asp.net-mvc-3 authorization

我正在学习MVC3,并在我的项目中实现了自己的MembershipProvider和RoleProviders,以利用当前在winforms应用程序登录和访问限制系统中使用的现有数据库表。

一切都按预期工作,但我想我可能在控制器操作的[Authorize]标签上做错了。

如果我使用这样的东西,限制工作正常: [Authorize(Roles = "Admin, Purchaser")]

但是角色“管理员”和“购买者”的名称都在我的数据库角色表中,并且我将它们硬编码到此Authorize标记中似乎“错误”。这意味着如果我在数据库表中添加了一个新角色,那么我必须在相关的位置更改Authorize标记。

它不像数据库中的角色会经常变化,它对我来说似乎有点'僵硬'。

所以我的问题是,我这样做是否正确?有没有更好的方法,或者它只是在MVC项目中使用该系统的标准方式?

非常感谢。

1 个答案:

答案 0 :(得分:0)

是。默认授权模型不灵活。但是,由于您已经拥有自定义RoleProvider,因此您可以毫不费力地使其变得灵活。

诀窍是在GroupUser之间使用中间实体Role。用户属于组,组具有角色。使用此功能,您可以检索特定用户所在的角色,反之亦然。