我如何通过多个值到自定义RoleProvider方法GetUserRoles在我的MVC应用程序?
-
19-09-2019 - |
题
我想我的自定义的权限管理系统粘合到一个新的ASP.NET MVC应用程序。我做的工作写我自己的自定义AuthorizeAttribute的应用相当数量。我也写我自己的自定义的MembershipProvider和RoleProvider实现。所有这些精美的作品,直到我需要检查我的角色是用户的一部分。 我没有这一切,所以我可以简单地这样做对我的控制器,和我以前在VS2010默认MVC模板复古适合我的代码为原型的:
[CustomAuth(Roles='X')]
public ActionResult DoSomething()
我的定制系统有点古怪虽然。我不叫成SQL数据库。这是一个简单的Web服务,它提供3种方法:CheckPassword,GetPermissions,WebLogin。 WebLogin简单地包装了CheckPassword和GetPermissions到一个通话中。当使用WebLogin从内部的ValidateUser没有工作,我叫TestPassword从内MembershipProvider.ValidateUser(用户名,密码),当这个电话全成我会找回用户名,否则它会失败,我会得到一个NULL。
问题是,当我打电话到我的实现RoleProvider的。以用户名的单个参数定义GetRolesForUser抽象类。我GetPermissions()方法需要多于一个用户名的工作。它被定义像这样:
GetPermissions(privateKey,userName)
显然,从以下RoleProvider方法中调用,这是行不通的。我无法通过专用密钥到受支持开箱的方法。
public override string[] GetRolesForUser(string username)
时不可能我自己的自定义RoleProvider内摆脱打电话给我自己的自定义方法?
解决方案
您可以施展的作用提供商作为您的自定义类型,这将会给你的方法,你的访问。因为你的函数接口之外,虽然,这个紧密结合您的应用程序到你的角色提供 - 这可能是你的目的精细
RoleProvider rp = Roles.Provider;
(rp as MyRoleProvider).GetPermissions(privateKey,userName);
其他提示
我认为它应该是:
(RoleProvider as MyRoleProvider).GetPermissions(privateKey,userName);