zoukankan      html  css  js  c++  java
  • 权限管理(一个管理员多一个角色)--初期- 待完善



    对应的英文名称


     检测当前登录用户是否有改权限

    /// <summary>
    /// 判断管理员是否已经登录(解决Session超时问题)
    /// </summary>
    public bool IsAdminLogin()
    {
       //如果Session为Null
        if (Session["user"] != null)
        {
            return true;
         }
         else
          {
             return false;
          }
    }
    判断管理员是否登录
    /// <summary>
    /// 获取管理员信息
    /// </summary>
    public S_PUSERS GetAdminInfo()
    {
       if (IsAdminLogin())
          {
              S_PUSERS model = Session["user"] as S_PUSERS;
              if (model != null)
              {
                    return model;
               }
            }
            return null;
    }
    获取管理员信息
    /// <summary>
    /// 权限检查
    /// </summary>
    /// <param name="url">链接地址//这里并用不上</param>
    /// <param name="action_type">权限类型(Add,Edit,Del。。。)</param>
    /// <param name="roleid">资源id</param>
    /// <returns></returns>
     public bool ChkAdmdinLevel(string url, string action_type, decimal roleid)
    {
         //创建用户实例
          S_PUSERS model = new S_PUSERS();
          using (LsTransEntities data = new LsTransEntities())
           {
                   //创建是否有这个权限的标杆
                    bool flo = false;
                    //判断用户是否登录
                    if (IsAdminLogin())
                    {
                        //获取当前用户信息
                        model = GetAdminInfo();
                        if (model.USERNAME != "Admin")
                        {
                            //逻辑代码                    
                            //找到相应的资源信息S_MRoleList
                            S_MROLELIST rol = data.S_MROLELIST.FirstOrDefault(x => x.ID == roleid);
                            if (rol != null)
                            {
                                //查询得到相应的角色id
                                //S_Mmanagerrolevalue  可能有多个角色
                                var list = data.S_MMANAGERROLEVALUE.Where(x => x.ID == rol.ID);
    
                                //查询得到用户的管理员id //S_PManager
                                S_PMANAGER man = data.S_PMANAGER.FirstOrDefault(x => x.USERID == model.USERID);
                                if (man != null)
                                {
                                    //找到对应的所有角色id //S_MRoleValue
                                    var li = data.S_MROLEVALUE.Where(x => x.MANAGERID == man.MANAGERID);
                                    if (li != null)
                                    {
                                        foreach (var item in li)
                                        {
                                            if (list.FirstOrDefault(x => x.ROLEID == item.ROLEID && x.ACTIONTYPE.Contains(action_type)) != null)
                                            {
                                                flo = true;
                                                return flo;
                                            }
                                            else
                                            {
                                                flo = false;
                                            }
                                        }
                                    }
                                    else
                                  {
    
                                      flo = false;
                                   }
                              }
                              else
                              {
                                  flo = false;
                              }
    
    
                          }
                      }
                      else
                      {
                          return true;
                      }
                 }
                 if (!flo)
                 {
                        //避免当一直弹出不能进入该权限
                       if (Session["error"] != null)
                       {
                        Session["error"] = Convert.ToInt32(Session["error"]) + 1;
    
                       if (Convert.ToInt32(Session["error"]) == 2)
                      {
                          Session["url"] = "/Manager/Login.aspx";
                      }
                }
                else
               {
                   Session["error"] = 1;
               }
            }
                    return flo;
         }
    }
    判断用户是否有权限访问

    调用方法

    //判断该用户是否有相应的访问权限
    //HttpContext.Current.Request.Url.AbsolutePath.ToString()  获取当前连接地址
    //parent.parent.location.href 由于使用if  所以这样写才能在父页面弹出对话框
    //访问连接地址:如   http://localhost:33/test.aspx?type=View&roleid=352
    public decimal projId, roleid;
    protected void Page_Load(object sender, EventArgs e)
    {
      decimal.TryParse(Request["roleid"], out roleid);
      if (!ChkAdmdinLevel(HttpContext.Current.Request.Url.AbsolutePath.ToString(), Request["type"], roleid))
      {
      Response.Write("<script>alert('您没有管理该页面的权限或登录过期,请勿非法进入!'); parent.parent.location.href ='" + Session["url"] + "'; </script>");
      return;
      }
    }

     最终达到效果

    1、后台菜单动态化 通过后台可直接管理

    2、每个连接的操作都可控制--权限管理


    资源列表  资源列表通过递归进行查询


     每一个连接/资源


    操作类型


    角色列表


    给相应的角色分配资源



    给用户分配权限

  • 相关阅读:
    2.Android之按钮Button和编辑框EditText学习
    《DSP using MATLAB》Problem 3.8
    《DSP using MATLAB》Problem 3.7
    《DSP using MATLAB》Problem 3.6
    《DSP using MATLAB》Problem 3.5
    《DSP using MATLAB》Problem 3.4
    《DSP using MATLAB》Problem 3.3
    《DSP using MATLAB》Problem 3.2
    《DSP using MATLAB》Problem 3.1
    《DSP using MATLAB》Problem 2.20
  • 原文地址:https://www.cnblogs.com/lovable/p/7122304.html
Copyright © 2011-2022 走看看