如果我在ASP.NET MVC中实现自己的CustomPrincipal,我必须使用自定义ActionFilterAttribute吗?

时间:2009-11-29 02:08:35

标签: asp.net-mvc asp.net-membership

如果我在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"))]

1 个答案:

答案 0 :(得分:0)

您的使用的属性将尝试并使用默认的RoleProvider来找出该用户所处的角色。

在文章中,他概述了创建自定义[UserInRole(“Admin”)]属性,该属性避免了RoleProvider并使用自定义逻辑来确定用户所处的角色。

这是一篇关于实现自己的RoleProvider的MSDN文章: http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx

修改答案: 您必须实现自己的角色提供者或创建自己的自定义标记。您的自定义标记看起来类似于MVC中的标记,但您不能只匹配签名并希望以这种方式覆盖它。