Asp.net mvc 在MVC中,当一个用户在一个由动作方法调用的函数中时,我能否找到该用户是否处于角色中?

Asp.net mvc 在MVC中,当一个用户在一个由动作方法调用的函数中时,我能否找到该用户是否处于角色中?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,razor,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,Razor,我的代码在操作方法中包含以下内容: catch (Exception e) { log(e); return Content(ExceptionExtensions.GetFormattedErrorMessage(e)); } 在ExceptionExtensions.GetFormattedErrorMessage(e)函数中,我希望能够返回不同的消息,具体取决于它是“来宾”角色还是“管理员”角

我的代码在操作方法中包含以下内容:

        catch (Exception e)
        {
            log(e);
            return Content(ExceptionExtensions.GetFormattedErrorMessage(e));
        }

ExceptionExtensions.GetFormattedErrorMessage(e)
函数中,我希望能够返回不同的消息,具体取决于它是“来宾”角色还是“管理员”角色的用户。我是否能够在该函数中执行此操作,或者我是否需要以某种方式确定用户在控制器中是否担任角色,然后将该信息传递给另一个函数

如果您使用的是.NET中的现成角色提供程序,则应使用
Roles.IsUserInRoles
方法:

if(Roles.IsUserInRoles(HttpContext.Current.User.Identity.Name, "SomeRoleName"))
{
    // do stuff ...
}

您需要访问HTTPContext,我认为它在包含action方法的类中不可用,一种方法是将HTTPContext传递给函数本身,或者您可以验证用户是管理员还是字段用户,然后将其传递给函数

要验证角色,可以使用以下方法:

HttpContext.User.IsInRole("Admin");   //returns bool

还要检查您是否有权在方法中访问HttpContext。

如果
ExceptionExtensions
类位于同一MVC项目中您可以使用
HttpContext.User.IsInRole()从
FormatErrorMessage
函数访问角色信息
如果该函数位于不同的程序集中,则需要对
System.Web
assembly的引用

将角色信息从控制器传递到该函数,还是从该函数检索角色信息

如果函数位于不同的程序集中,那么我建议您从控制器传递信息,这样可以避免与
System.Web
的依赖关系