我想将我的自定义权限系统粘合到新的 ASP.NET MVC 应用程序中。我已经做了相当多的工作,为应用程序编写自己的自定义 AuthorizeAttribute。我还编写了自己的自定义 MembershipProvider 和 RoleProvider 实现。所有这些工作都很顺利,直到我需要检查我的用户所属的角色。 我做了这一切,所以我可以简单地在我的 Controller 上执行此操作,并且我使用 VS2010 中的默认 MVC 模板来改造我的代码作为原型(prototype):
[CustomAuth(Roles='X')]
public ActionResult DoSomething()
不过我的自定义系统有点古怪。我不调用 SQL 数据库。它是一个简单的 Web 服务,提供 3 个方法:CheckPassword、GetPermissions、WebLogin。 WebLogin 只是将 CheckPassword 和 GetPermissions 包装到一个调用中。当从 ValidateUser 中使用 WebLogin 不起作用时,我从 MembershipProvider.ValidateUser(userName,password) 中调用 TestPassword,当此调用成功时,我将返回 UserID,否则它将失败并且我将返回 NULL。
问题是当我调用 RoleProvider 的实现时。抽象类使用单个参数 userName 定义了 GetRolesForUser。我的 GetPermissions() 方法需要多个用户名才能工作。它的定义如下:
GetPermissions(privateKey,userName)
显然,从以下 RoleProvider 方法中调用它是行不通的。我无法将 privateKey 传递给开箱即用的支持方法。
public override string[] GetRolesForUser(string username)
是否无法从我自己的自定义 RoleProvider 中调用我自己的自定义方法?
最佳答案
您可以将角色提供者转换为您的自定义类型,这将使您能够访问您的方法。因为您的函数位于接口(interface)之外,所以这将您的应用程序与您的角色提供者紧密耦合 - 这可能适合您的目的。
RoleProvider rp = Roles.Provider;
(rp as MyRoleProvider).GetPermissions(privateKey,userName);
关于c# - 如何将多个值传递给 MVC 应用程序中的自定义 RoleProvider GetUserRoles 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223741/