.NET 배경 사용자 권한 관리 실현

9177 단어 .net사용자 권한
순서:기능 성 이 비교적 강 한 백 스테이지 관리 사 이 트 는 여러 측면 에서 응용 권한 관리 기능 을 고려 합 니 다.회사 내부 관리 시스템 의 경우 관리 자 는 서로 다른 직원 이 있 는 부서 에 따라 서로 다른 권한 을 부여 하거나 상하 예속 관계 에 따라'피라미드'관 리 를 실현 한다.이 글 의 내용 에 진실 하지 못 한 부분 이 있 으 면 지적 하여 바로잡아 주시 기 바 랍 니 다.
본문:다음 효과 그림 은 한 사용자 가 해당 권한 을 가지 고 checkbox 상태 로 구별 하여 저장 할 수 있 는 지 여부 입 니 다.

(1)여기 저 장 된 권한 기능(카 테 고리)이름과 권한 모듈(구체 적)이름 은 모두 수 동 으로 데이터 베 이 스 를 입력 하고 삭제 할 수 없습니다.이 예 는 특정한 권한 모듈 을 가장 기본 적 인 요소 로 하고 이 권한 을 가지 고 있 는 지 1 또는 0 으로 표시 하여 현재 사용자 의 모든 권한 링크 를 바 이 너 리 문자열 로 데이터베이스 에 저장 합 니 다.예시 코드 1.1
(2)예시 코드 1.2 와 같이 읽 기
(3)프론트 코드 는 다음 과 같다.

// js , hidden

<script language="javascript" type="text/javascript">

function getcheck() {
var inputs = document.getElementById("cbpanel");
var chks = inputs.getElementsByTagName("input");
var str = "";
for (var i = 0; i < chks.length; i++) {
if (chks[i].type == 'checkbox') {
str += chks[i].value + "," + chks[i].checked + "|";
}
}
document.getElementById("Hidden1").value = str;
}

<script>

<body>

<div id="cbpanel"> <asp:Literal ID="LiteralRole" runat="server"></asp:Literal>

<input id="Hidden1" runat="server" type="hidden" /></div>

</body>


1.2
 /// <summary>
         ///
         /// </summary>
         private void BindAllModule()
         {
             StringBuilder sb = new StringBuilder();
             sb.Append("<table class=\"AddRole\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
             Bll_User_Module mbll = new Bll_User_Module();
             IList<User_Model.Model_User_Module> list = mbll.GetAllList();//
              string moduleidstr = "";
              for (int i = 0; i < list.Count; i++)
              {
                  sb.Append("<tr><th style=\"width: 100px; height: 36px;\">");
                  sb.Append(list[i].ModuleName);
                  sb.Append("</th>");
                  sb.Append("<td>");
                  sb.Append("{" + list[i].ID + "}");
                  sb.Append("</td></tr>");
                  moduleidstr += list[i].ID.ToString() + ",";
              }
              sb.Append("</table>");

              if (Request.QueryString["nid"] != null)
              {
                  //
                  BLL_User_Role mrbll = new BLL_User_Role();

                  User_Model.Model_User_Role mrmodel = mrbll.GetModel(Convert.ToInt32(Request.QueryString["nid"]));
                  string RoleActions = mrmodel.RoleAction;
                  BindAllFunction(moduleidstr, sb, RoleActions);
              }
              else
              {
                  //
                  BindAllFunction(moduleidstr, sb, "");
              }
         }
         /// <summary>
         ///
         /// </summary>
         /// <param name="moduleidstr"> </param>
         /// <param name="sb">html </param>
         /// <param name="RoleActions"> </param>
         private void BindAllFunction(string moduleidstr, StringBuilder sb, string RoleActions)
         {
             Bll_User_Function bll = new Bll_User_Function();
             IList<User_Model.Model_User_Function> list = bll.GetAllList();//
             moduleidstr = moduleidstr.TrimEnd(',');//
             string[] str = moduleidstr.Split(',');// ,
             for (int i = 0; i < str.Length; i++)//
             {
                 StringBuilder funsb = new StringBuilder();
                 for (int j = 0; j < list.Count; j++)
                 {
                     if (list[j].ModuleNo == Convert.ToInt32(str[i]))
                     {
                         if (RoleActions == "")
                         {
                             //
                             funsb.Append("<input id=\"" + list[j].FuncNo.ToString() + "\" type=\"checkbox\" checked=\"checked\" value=\"" + list[j].FuncNo.ToString() + "\" />");
                             funsb.Append(list[j].FuncName + "&nbsp;&nbsp;");
                         }
                         else
                         {
                             //
                             if (RoleActions.Length >= list[j].FuncNo)
                             {
                                 //FuncNO
                                 if (RoleActions.Substring(list[j].FuncNo - 1, 1) == "1")//
                                 {
                                     //
                                     funsb.Append("<input id=\"" + list[j].FuncNo.ToString() + "\" type=\"checkbox\" checked=\"checked\" value=\"" + list[j].FuncNo.ToString() + "\" />");
                                     funsb.Append(list[j].FuncName + "&nbsp;&nbsp;");
                                 }
                                 else
                                 {
                                     //
                                     funsb.Append("<input id=\"" + list[j].FuncNo.ToString() + "\" type=\"checkbox\" value=\"" + list[j].FuncNo.ToString() + "\" />");
                                     funsb.Append(list[j].FuncName + "&nbsp;&nbsp;");
                                 }
                             }
                             else
                             {
                                 funsb.Append("<input id=\"" + list[j].FuncNo.ToString() + "\" type=\"checkbox\" value=\"" + list[j].FuncNo.ToString() + "\" />");
                                 funsb.Append(list[j].FuncName + "&nbsp;&nbsp;");
                             }
                         }
                     }
                 }
                 //
                 sb.Replace("{" + str[i] + "}", funsb.ToString());
             }
             LiteralRole.Text = sb.ToString();     
         }

 // ( )
 protected void Submit_Click(object sender, EventArgs e)
 {
 string cbstr = Hidden1.Value;// hidden , “1,true|2,true|3,false|4,true”

 ........

 }

1.1
 /// <summary>
         ///
         /// </summary>
         /// <param name="str"></param>
         /// <returns> </returns>
         private string GenerateRoleAction(string str)
         {
            //
             DataTable dt = new DataTable();
             DataColumn col1 = new DataColumn("funno", typeof(int));
             dt.Columns.Add(col1);
             DataColumn col2 = new DataColumn("flag");
             dt.Columns.Add(col2);

             string[] strarray = str.TrimEnd('|').Split('|');//
             for (int i = 0; i < strarray.Length; i++)
             {
                 DataRow dr = dt.NewRow();
                 dr[0] = strarray[i].Split(',')[0];//
                 dr[1] = strarray[i].Split(',')[1];// , true false
                 dt.Rows.Add(dr);
             }

             dt.DefaultView.Sort = "funno asc";
             DataTable dttemp = dt.DefaultView.ToTable();
             //
             string s = "";
             for (int j = 0; j < dttemp.Rows.Count; j++)
             {
                 if (dttemp.Rows[j]["flag"].ToString().ToLower() == "true")
                 {
                     s += "1";// (true, ) 1
                 }
                 else
                 {
                     s += "0";// (false, ) 0
                 }
             }
             return s;//
         }

좋은 웹페이지 즐겨찾기