2

我正在尝试在我的 ASP.NET MVC 应用程序中实现自定义 RoleProvider。

我创建了一个自定义 MembershipProvider 并且它有效,因为我能够成功验证用户。下一步是实现 RoleProvider 以限制对某些控制器的访问仅限于管理员用户。

谁能提供我需要采取的步骤的简要概述?

我现在的重点是我的控制器带有 Authorize 过滤器,如下所示:

[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
}

谁能指出我正确的方向?

4

2 回答 2

3

我将此用作自定义角色管理器的基线:http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

应该在 MVC 或 Web 窗体中工作。

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

void AddUsersToRoles(string[] usernames, string[] roleNames)
string[] GetRolesForUser(string id)
bool RoleExists(string roleName)
于 2009-12-07T14:23:12.410 回答
2

对于未实现的方法,请务必抛出NotImplementedException。这应该可以帮助您确定自定义提供程序中需要哪些方法来完成工作。

我怀疑您必须实施IsUserInRole

于 2009-09-30T22:37:50.650 回答