【问题标题】:block Invoking class method based on user role asp.net mvc 3基于用户角色的块调用类方法asp.net mvc 3
【发布时间】:2011-12-07 07:55:29
【问题描述】:

我正在创建我的第一个 ASP.NET MVC 3 应用,但在创建基于用户角色的类实例时遇到了问题。

我有一个名为 Account 的类,它包含有关用户帐户的信息和一些允许我操纵(更新)用户帐户信息的方法。例如 ChangeNickName、AddToGroup、RemoveFromGroup、Ban 等。

如您所见,这些方法的问题是我不想让任何人使用 AddToGroup 或 Ban 方法,但只允许具有指定角色的用户(我正在使用 ASP.NET 默认角色实现系统)

所以我想知道有没有一种方法可以将属性 [Authorize(Roles = "Admin")] 添加到我的 AddTogroupMethod 中,就像我在控制器方法上使用它一样

我知道,通过正确实现控制器,我不需要这样的东西,但我想确保如果用户不是指定角色的一部分,我不允许任何人创建类的实例(或意外使用指定的方法)。

因此,例如,如果我不小心在用户控制器中添加了对 AddToGroup 方法的访问权限,我仍然可以防止他们利用附加到此方法的属性来利用错误

如果我不能用属性解决这个问题,如果我从 xy 类调用 AddToGroup 方法,是否有办法让 VS 阻止我调试应用程序

如果您对如何使这项工作有任何想法,我愿意接受建议

比提前

【问题讨论】:

  • 授权与您想做的事情无关...您最好考虑在您的代码中自己实现它。

标签: c# asp.net-mvc implementation roles


【解决方案1】:

您可能应该使用AuthorizeAttribute,但是您可以使用Roles.UserIsInRole 在代码中检查当前用户的角色。

这里的 MVC 中有一些关于此的信息(程序集似乎在 3.5/4.0 之间发生了变化):

asp.net mvc -> Roles.IsUserInRole(username,role)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2021-06-14
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多