C# 处理静态列表
我创建了一个权限对象,它存储用户ID、用户所在的组和用户权限。这是一门公共课 我还需要一个静态对象来存储这些权限对象的列表,如果管理更改了权限中的任何内容,所有更改都会立即应用于每个登录用户 我有几个问题:C# 处理静态列表,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我创建了一个权限对象,它存储用户ID、用户所在的组和用户权限。这是一门公共课 我还需要一个静态对象来存储这些权限对象的列表,如果管理更改了权限中的任何内容,所有更改都会立即应用于每个登录用户 我有几个问题: 我应该在第一个用户登录时创建此静态对象,还是应该在第一个用户登录前(例如,当我们在IIS上启动应用程序时)使用某种机制创建该列表 当特定用户注销时,是否可以轻松删除其项目列表 系统要求权限设置在管理员进行更改后立即生效 编辑1: public class permissionTemp {
public class permissionTemp
{
public static Guid userGuid { get; set; }
public static string[] grupos { get; set; }
public static string[] permissoes { get; set; }
}
public static class security
{
public List<permissionTemp> userPermissionSet { get; set; }
}
public类permissionTemp
{
公共静态Guid userGuid{get;set;}
公共静态字符串[]grupos{get;set;}
公共静态字符串[]权限{get;set;}
}
公共静态类安全
{
公共列表userPermissionSet{get;set;}
}
考虑一下单例,这样您就不用担心创建时间了:
单身人士:
public class Permission
{
private Permission()
{ }
private static Permission _instance = null;
public static Permission Instance
{
get
{
if(_instance == null)
{
_instance = new Permission();
}
return _instance
}
}
现在,您可以使用访问同一实例
Permission.Instance
对象是在第一次访问时创建的。因此,在私有构造函数中,您可以添加代码来读取数据库的权限。考虑一个单例,这样您就不用担心创建时间了: 单身人士:
public class Permission
{
private Permission()
{ }
private static Permission _instance = null;
public static Permission Instance
{
get
{
if(_instance == null)
{
_instance = new Permission();
}
return _instance
}
}
现在,您可以使用访问同一实例
Permission.Instance
对象是在第一次访问时创建的。因此,在私有构造函数中,您可以添加代码来读取数据库的权限。首先,我建议避免创建用于存储此类敏感信息的静态对象,并且如果任何用户在未单击“注销”的情况下关闭了浏览器,则不会删除该特定用户的对象
但是,如果您需要这样做以满足您的需求,您可以在应用程序首次启动时在Global.asax文件的application Start Event中的该对象中创建它。首先,我建议避免创建用于存储此类敏感信息的静态对象,并且如果任何用户在关闭浏览器时未单击“注销”然后将不会删除该特定用户的对象 不过,若您需要这样做以满足您的需求,您可以在应用程序首次启动时在Global.asax文件的application Start事件中的该对象中创建它
注意:我会使用一些锁定机制来防止多个用户同时访问列表。另一个存储列表的地方是WebCache。这是所有用户都使用的,因此,如果它由person x更新,则person y的下一次读取将是更新版本。您是否将这些权限保留在某个位置?权限对象是什么样子的?@MichaelPerrenoud刚刚更新了我的帖子,是的,权限在数据库中可能我不完全理解,但似乎您必须检查数据库,以获取用户发出的每个请求的权限;以确保权限没有被管理员修改,并且用户仍然被授权查看他/她刚才请求的页面。如果权限更改,也可以考虑自动记录用户。如果发生这种情况时他们正在使用该站点,系统将提示他们再次登录,然后可以加载新权限。可能会让用户感到恼火,具体取决于权限更改的频率。您是否将这些权限保留在某个位置?权限对象是什么样子的?@MichaelPerrenoud刚刚更新了我的帖子,是的,权限在数据库中可能我不完全理解,但似乎您必须检查数据库,以获取用户发出的每个请求的权限;以确保权限没有被管理员修改,并且用户仍然被授权查看他/她刚才请求的页面。如果权限更改,也可以考虑自动记录用户。如果发生这种情况时他们正在使用该站点,系统将提示他们再次登录,然后可以加载新权限。可能会让用户感到恼火,这取决于权限更改的频率。完美。。。这就是我要找的。从控件中读取此对象应该不难做到完美。。。这就是我要找的。从控件读取此对象应该不难