2013-03-01 73 views
0

我必须创建一个存储用户id一个权限对象,组用户在和user's权限。这是一个公共类处理静态列表

我还需要有存储这些权限的对象列表静态对象,如果政府在权限改变任何东西都改变马上申请每个登录用户

我有一对夫妇问题:

  1. 我应该创建这个静态对象当第一用户登录或者是有机制应该用它来创建列表之前,第一个用户登录(例如,当我们在IIS启动我们的应用程序)?
  2. 难道是容易清除的项目列表中,当注销特定用户?

这是系统要求,权限设置在管理员进行更改后立即生效。

编辑1:

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; } 
} 
+0

你是否在某处保留这些权限?权限对象是什么样的? – 2013-03-01 12:29:24

+0

@MichaelPerrenoud刚刚更新了我的文章,是的,权限是在数据库 – 2013-03-01 12:35:45

+0

也许我不完全理解,但它似乎你将不得不检查数据库的权限,每个请求的用户作出;以确保权限没有被管理员修改,并且用户仍然有权查看他/她刚刚请求的页面。 – 2013-03-01 13:42:38

回答

1
  1. 您可以使用Global.asax中的Application_Start方法在网站第一次启动时运行一些代码。这将在处理第一个请求之前运行。
  2. 您可以使用在Global.asax的Session_End中的方法从列表中删除的项目。您也可以在执行FormsAuthentication.SignOut(如果使用表单身份验证)的同时执行此操作。

注:我会使用一些锁定机制来防止多个同时访问列表。存储列表的另一个地方是WebCache。这被所有用户使用,所以如果它被人x更新,那么从人y读取的下一个将是更新后的版本。

+0

完美...这就是我一直在寻找。从控制器读取这个对象应该不难 – 2013-03-01 14:20:32

1

想想单身,所以你不必担心创建时间:

辛格尔顿:

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 

该对象在第一次访问时创建。所以在私有构造函数中,你可以添加你的代码来读取数据库的权限。所有的

0

首先,我建议避免用于存储这种sensetive信息,并且还如果任何用户已经关闭浏览器没有点击“退出”,则对于该特定的用户将不被删除对象创建静态对象。

不过,如果你需要做到这一点,以满足您的要求,您可以在Applciation启动事件对象Global.asax文件创建它的应用程序启动第一次。