C# MVC 3操作/控制器属性/权限

C# MVC 3操作/控制器属性/权限,c#,asp.net-mvc,C#,Asp.net Mvc,为了简化这个示例,我的站点有两个控制器,UsersController和VenuesController,它们都有自己的关联“管理权限” 因此,用户可以拥有“用户”管理权限和/或“场馆”管理权限(这些是my db中用户表上的布尔字段) 用户登录,我在会话中拥有他/她的权限 我想用一个自定义属性装饰我的控制器,以检查用户是否具有使用控制器的正确权限。我不想创建一个UserPermissionAttribute和一个VenuePermissionAttribute,理想情况下我想要一个单一的属性,它

为了简化这个示例,我的站点有两个控制器,UsersController和VenuesController,它们都有自己的关联“管理权限”

因此,用户可以拥有“用户”管理权限和/或“场馆”管理权限(这些是my db中用户表上的布尔字段)

用户登录,我在会话中拥有他/她的权限

我想用一个自定义属性装饰我的控制器,以检查用户是否具有使用控制器的正确权限。我不想创建一个UserPermissionAttribute和一个VenuePermissionAttribute,理想情况下我想要一个单一的属性,它接受bool属性并检查它是否为真,比如

[CheckPermissionAttribute(_userSession.AdminPermissions.Users)]
public class UsersController : Controller
{

}


这是可能实现的,还是应该通过PostSharp或其他方法来实现相同的结果?

您可以使用参数创建属性。动作筛选器参数是动作筛选器的属性


但是最好使用标准方法创建用户角色和用户角色

为什么不使用内置的角色管理功能呢?您只需将VenuesAdmin和UsersAdmin角色分配给您想要拥有这些权限的用户,然后使用标准授权属性添加检查?是的,这是一个选项,可能是最好的选项,因为应用程序不使用成员资格提供程序,因此,我正在探索实现同样目标的其他方法?您如何知道用户是谁?应用程序不使用ASP.NET成员身份,我有一个自定义用户表,在其中存储每个用户的权限。在应用程序中,我在会话中拥有这些权限。我想在控制器上有一个属性,在这里我可以从会话中传入一个特定的值,即如果它是用户控制器,那么我想传入会话[HasUsersPermission],它是bool字段(因此要么为true,要么为false)。在我的属性中,我想检查传入的值是否为真,如果为真,那么他们就可以访问。这意味着在我在会话[HasVenuePermission]中传递的场馆控制器上,我意识到属性参数必须是常量,因此我正在寻找其他东西来帮助我实现这一点!
[CheckPermissionAttribute(_userSession.AdminPermissions.Venues)]
public class VenuesController : Controller
{

}