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
的依赖关系