2009-09-30 72 views
2

我想在我的ASP.NET MVC应用程序中实现一个自定义RoleProvider。如何实现自定义RoleProvider?

我已经创建了一个自定义的MembershipProvider,它的工作原理是,我能够成功验证用户。下一步是实施RoleProvider,以限制只有管理员用户才能访问certian控制器。

任何人都可以提供我需要采取的步骤的简要概述吗?

,我是在现在的问题是我有我的控制器与授权过滤器,象这样:

[Authorize(Roles="Admin")] 
public class AdminOnlyController : Controller 
{ 
    // stuff 
} 

,我有我的CustomRoleProvider类,用下面的方法与不可─的负载沿实施方法:

public override string[] GetRolesForUser(string username) 
{ 
    if (username == "dave") 
    { 
     return new string[] { "Admin" }; 
    } 
} 

我想我需要添加用户的角色莫名其妙,但我不知道该怎么做。理想情况下,最终的结果将是,其中未经授权的用户无法访问某些控制器的场景,我在我的意见,我可以决定是否显示链接的东西,如:

if (User.IsInRole("Admin")) 
{ 
    // show links to Admin Controllers 
} 

任何人都可以点我在正确的方向?

回答

2

对于未执行的方法,一定要抛出NotImplementedException。这应该可以帮助您找出自定义提供程序需要哪些方法才能完成工作。我想你必须执行IsUserInRole

3

我就以此为作为一个自定义角色经理底线:http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

应该在MVC或网页形式的工作。

更新:由于该网页不再存在,您可以尝试使用this one。基本要求是你需要实现RoleProvider接口,即:

void AddUsersToRoles(string[] usernames, string[] roleNames) 
string[] GetRolesForUser(string id) 
bool RoleExists(string roleName) 
+0

此链接不再有效。如果这可能会更新,那将是很好的。 – 2012-05-23 13:41:36

+0

@JeffReddy更新了该链接和我的答案。 – Junto 2012-05-25 12:02:21