如果我在ASP.NET MVC中实现自己的CustomPrincipal,我是否必须使用自定义ActionFilterAttribute来检查我的用户所属的角色(例如 Setting up authentication in ASP.NET MVC )?
当我使用
时[Authorize]
它工作正常。但是当我使用
时[Authorize(Roles=("Example"))]
它熄灭并寻找:
“dbo.aspnet_CheckSchemaVersion”
我显然没有,因为我没有将ASP.NET成员资格对象添加到我的数据库,我正在编写自己的。
我正在使用ASP.NET MVC 2 beta。
如何覆盖默认属性使用的逻辑,以便我可以使用相同的标记[Authorize(Roles=("Example"))]
?
答案 0 :(得分:0)
您的使用的属性将尝试并使用默认的RoleProvider来找出该用户所处的角色。
在文章中,他概述了创建自定义[UserInRole(“Admin”)]属性,该属性避免了RoleProvider并使用自定义逻辑来确定用户所处的角色。
这是一篇关于实现自己的RoleProvider的MSDN文章: http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx
修改答案: 您必须实现自己的角色提供者或创建自己的自定义标记。您的自定义标记看起来类似于MVC中的标记,但您不能只匹配签名并希望以这种方式覆盖它。