在数据库中增加个int字段(flag),字段的内容跟用户的id对应
如果项目经理登陆的时候写sql语句的时候取全部信息,如果不是项目经理登陆就在sql语句中增加一个where判断 flag="+id+"
项目经理可以取到全部数据,个人只能取自己的信息

解决方案 »

  1.   


    为进行身份验证的用户分配角色
    因为窗体用户通常不是 Microsoft Windows 用户,所以在默认情况下,没有任何与他们关联的角色。因此,必须将进行身份验证的用户的角色附加到该用户的身份标识中,以便在代码内实现基于角色的安全。使用本节中的示例代码可在您的应用程序中实现基于角色的安全。此示例代码将预先指定的角色分配给进行身份验证的用户。根据您存储用户数据的方式,您可实现自己的方法以检索通过身份验证的用户的角色,并将这些角色附加到身份验证用户的标识中,下面的代码示例显示了这一过程。将以下代码复制到现有应用程序中的 Global.asax 文件中,以便在 Application_AuthenticateRequest 事件处理程序中将这些角色分配给进行身份验证的用户: 
    public void Application_AuthenticateRequest( Object src , EventArgs e )
    {
    if (!(HttpContext.Current.User == null))
       {
    if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
          {
    System.Web.Security.FormsIdentity id;
    id = (System.Web.Security.FormsIdentity)HttpContext.Current.User.Identity;
    String[] myRoles = new String[2];
    myRoles[0] = "Manager";
    myRoles[1] = "Admin";
    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
          }
       }
    }
    在 ASPX 页中检查用户角色并实现程序逻辑
    以下步骤演示如何根据身份验证用户所属的角色实现和控制程序逻辑。 
    新建一个名为 Sample.aspx 的 .aspx 页,然后粘贴以下代码: 
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Web" %><script runat=server>
    public void Page_Load() {
    if (User.IsInRole("Admin")){
    Response.Write ("You are an Administrator");}
    else {
    Response.Write ("You do not have any role assigned");}
        }</script>
    将 Sample.aspx 保存到现有应用程序中。浏览到该页以测试它。 
      

  2.   

    如果按照你说的来看,该权限系统应定义两个角色,经理和成员
    同时还有部门这个范围属性你可以把资料定义成要控制访问的权限,并具这些权限有个属性,即是哪个部门的。在你增加一个用户时,(属于某个部门),默认给他可以访问自已资料的权限。当把他加入经理角色时。默认给他本部门的所有权限。
    以上是初始设置,当某个人是经理时,他还可以把本部门的权限赋给其它用户(应当包括所有角色和部门的,当然也可以控制)。经过以上的分配后,每个用户的权限即可以统一来授与,即是自已默认的权限加上自已被赋给的权限。User 用户类
    User.Department 所属部门
    User.IsManager  是否是经理
    User.UserRole   所属角色
    User.SelfRightID 员工默认权限IDRight 权限类
    Right.ID 权限ID
    Right.Department 所属部门在判断用户有没有某个资料的访问权限时,可以先取得本资料的对应权限ID,然后判断是否是员工默认权限。如果员工是经理,看权限的部门是否和员工的部门一至。最后看权限是否在员工被赋给的权限中