Asp.net mvc User.IsInRole对一个操作失败,但对另一个操作失败
我在MVC应用程序中加入了一个自定义的authorize属性Asp.net mvc User.IsInRole对一个操作失败,但对另一个操作失败,asp.net-mvc,asp.net-mvc-4,authorization,authorize-attribute,Asp.net Mvc,Asp.net Mvc 4,Authorization,Authorize Attribute,我在MVC应用程序中加入了一个自定义的authorize属性 if(!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole)) 如果是真的,它会将您重定向到未经授权的 我将此属性放在控制器级别的控制器上 一次行动很好,一次行动我就未经授权 角色系统中是否存在一些错误或问题?我已经读到登出和登入可以强制一些缓存刷新或其他东西,但是我使用的系统会对您的域凭据进行身份验证,因此无法登出 我尝试重新启动应用程序池并删除我的会话
if(!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
如果是真的,它会将您重定向到未经授权的
我将此属性放在控制器级别的控制器上
一次行动很好,一次行动我就未经授权
角色系统中是否存在一些错误或问题?我已经读到登出和登入可以强制一些缓存刷新或其他东西,但是我使用的系统会对您的域凭据进行身份验证,因此无法登出
我尝试重新启动应用程序池并删除我的会话cookie,但没有任何效果
以前是否有人遇到过此特定问题,或者对刷新与其相关的任何缓存(假设是缓存问题)有一些指导
ETA:系统上的另一个用户为自己指定了控制器所需的角色,这两个操作对他来说都很好。所以也许我的用户不知怎么被窃听了。这是在UAT上进行的,所以调试起来比在我的本地机器上运行(运行良好)稍微困难一些
ETA2:我很确定这是一个缓存问题,因为在查询字符串中使用?1=1访问URL时,它是有效的。但我无法使缓存无效。这在将来为人员分配角色时可能是一个问题。首先,我们需要更多的代码,然后才能给您任何明确的答案。然而:
OutputCache
,则应确保您使用的是VaryByCustom
,并以某种方式在返回的自定义字符串中包含用户id或其他标识标记