1. 程式人生 > >權限管理(一個管理員多一個角色)--初期- 待完善

權限管理(一個管理員多一個角色)--初期- 待完善

level span ati url manage decimal mdi login als


技術分享


對應的英文名稱

技術分享


檢測當前登錄用戶是否有改權限

技術分享
/// <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、每個連接的操作都可控制--權限管理


資源列表 資源列表通過遞歸進行查詢

技術分享


每一個連接/資源

技術分享


操作類型

技術分享


角色列表

技術分享


給相應的角色分配資源


技術分享


給用戶分配權限

技術分享

權限管理(一個管理員多一個角色)--初期- 待完善