一旦通过身份验证,我将使用它HttpContext.Current.User.Identity.Name;
来确保用户有权查看我的网站的一部分。
当我访问网站的某些部分时,我需要获取用户并获取他们登录的上下文(他们登录的组织),url类似于settings/supercompany/profile
. 其中supercompany是当前上下文。
对于每个用户,我需要检查他们是该公司的管理员还是普通用户,如果是普通用户,那么他们看不到某些东西。
public class SettingsApi
{
private readonly string _userId;
private readonly string _contextId;
public SettingsApi(string userId, string contextId)
{
_userId = userId;
_contextId = contextId;
}
}
如果我从控制器(发布或获取)实例化上面的类,缓存会以某种方式搞砸吗?用户角色改变了,我不接?像下面这样的东西会很好用吗?
var settings = new SettingsApi(HttpContext.Current.User.Identity.Name, currentContextId);
settings.IsAdmin();
注意:我会使用属性进行授权,但我的要求是我需要从 URL 中挑选出 currentContext ,而且我需要在代码的其他地方使用上面的类。
更新
AuthorizeAttribute适用于缓存,但用于授权的方法即
protected override bool AuthorizeCore(HttpContextBase httpContext)
不会把我需要的类的实例交还给我......
更新 2我不希望此类或此类的实例被缓存,每次我要求一个新实例时,我都不介意从数据库中获取一个......
我的问题 - 我编码的方式好吗?我的用户和他的权限不会被缓存吗?