欧美日韩一区二区三区四区不卡,日韩欧美视频一区二区三区四区,久久精品欧美一区二区三区不卡,国产精品久久久乱弄

咨詢電話:186 7916 6165 咨詢電話:186 7916 6165 (微信同號)    在線QQ:181796286
NEWS BLOG ·
學無止境
關注開優網絡 關注前沿
ASP.NET Web 開發之異常處理機制
ASP.NET+jQuery上傳頭像

ASP.NET Web 開發之權限模塊

發表日期:2015-10-15    文章編輯:南昌開優網絡    瀏覽次數:4054    標簽:ASP.NET應用

1、用戶表中要有roleid字段即角色id
2、權限表qx_qx(id,createdate,modulename,cmd)
   modulename 學生管理  cmd 瀏覽
   modulename 學生管理  cmd 新增
   modulename 學生管理  cmd 編輯
   modulename 學生管理  cmd 刪除
3、角色表qx_role(id,createdate,rolename)  如:校長、教師、主任等
4、角色權限表qx_role_qx(id,createdate,roleid,qxid)

一、前臺如學生管理studen.aspx 班級管理class.aspx 
    新增btnAdd 編輯btnEdit 刪除btnDel   
二、通過角色權限表中的(new DAL.Role_qxDAL().CalcCount("roleid=" + u.roleid + " and qxid=" + qx.id) > 0)
    顯示或隱藏 "新增btnAdd 編輯btnEdit 刪除btnDel" 按鈕
 <%=GetLink("班級管理","class.aspx") %>
 <%=GetLink("學生管理", "student.aspx")%>
顯示瀏覽功能即鏈接地址
 public string GetLink(string name, string url)
        {
            string str = "";
            Model.Qx qx = new DAL.QxDAL().GetModelByNameCMD(name, "瀏覽");
            if (qx != null)
            {
                Model.User u = Session["user"] as Model.User;
                if (new DAL.Role_qxDAL().CalcCount("roleid=" + u.roleid + " and qxid=" + qx.id) > 0)
                {
                    str = "<a href='" + url + "' target='frm'>" + name + "</a><br />";
                }
            }
            return str;
        }
}
顯示新增按鈕以此類推可設置編輯、刪除按鈕
Model.User u = Session["user"] as Model.User;
Model.Qx qx = new DAL.QxDAL().GetModelByNameCmd("班級管理", "新增");  //GetModelByNameCmd根據modulename和cmd生成model
if (qx != null)
{
if (new DAL.Role_qxDAL().CalcCount("roleid=" + u.roleid + " and qxid=" + qx.id) > 0)
{
btnAdd.Visible = true;
}
else
{
btnAdd.Visible = false;
}
}

后臺
用戶管理
新增用戶:
Page_Load事件中
ddlrole.DataSource = new DAL.RoleDAL().GetList("");
ddlrole.DataTextField = "rolename";
ddlrole.DataValueField = "id";
ddlrole.DataBind();
//新增用戶
string name = txtname.Text.Trim();
string pwd = txtpwd.Text.Trim();
if (name.Length == 0 || pwd.Length == 0)
{
Xiaobin.Utility.Tool.Alert("請輸入內容", this.Page);
eturn;
}
string tmp = ddlrole.SelectedValue;
int x;
if (!int.TryParse(tmp, out x))
{
Xiaobin.Utility.Tool.Alert("請先添加角色再操作", this.Page);
eturn;
}
new DAL.UserDAL().Add(new Model.User()
{
roleid = x,
sername = name,
assword = pwd
});
Xiaobin.Utility.Tool.AlertAndGo("新增成功", Request.Url.ToString(), this.Page);

用戶權限管理
<asp:HiddenField ID="hfOpreate" runat="server" />
<asp:HiddenField ID="hfroleid" runat="server" />
<asp:ListBox ID="lsbrole" AutoPostBack="true" runat="server" OnSelectedIndexChanged="lsbrole_SelectedIndexChanged"></asp:ListBox>
你選擇的角色為:<asp:Literal ID="litrole" runat="server"></asp:Literal>
<asp:Repeater ID="rep1" runat="server" OnItemDataBound="rep1_ItemDataBound">
<ItemTemplate>
<asp:Literal ID="litname" Text='<%#Eval("modulename") %>' runat="server"></asp:Literal>
<asp:Repeater ID="rep2" runat="server" OnItemDataBound="rep2_ItemDataBound">
<ItemTemplate>
<asp:CheckBox ID="chk" ToolTip='<%#Eval("id") %>' Text='<%#Eval("cmd") %>' runat="server" />
</ItemTemplate>
</asp:Repeater>
    <br />
</ItemTemplate>
</asp:Repeater>
新增角色btnAdd    
//編輯角色btnEdit    
//刪除角色btnDel    
//授權btnAuthorize
<div id="pop" style="background-color: White; z-index: 10; position: absolute; width: 380px; height: 80px; line-height: 80px; border: 3px solid yellow; display: none; bottom: 170px;">
角色名稱:<asp:TextBox ID="txtrolename" runat="server"></asp:TextBox>
<asp:Button ID="btnOK" runat="server" Text="確定" OnClick="btnOK_Click" />
<input type="button" value="取消" onclick="$.popup.close('#pop')" /></div>  //div為彈出的層

if (!Page.IsPostBack)
{
lsbrole.DataSource = new DAL.RoleDAL().GetList("");
lsbrole.DataTextField = "rolename";
lsbrole.DataValueField = "id";
lsbrole.DataBind();

rep1.DataSource = new DAL.QxDAL().GetListDisinctName();
rep1.DataBind();
}
新增事件
hfOpreate.Value = "add";
string rolename = txtrolename.Text.Trim();
Xiaobin.Utility.Tool.ExecJs("$.popup.open('#pop')", this.Page);
編輯事件
int x;
if (!int.TryParse(hfroleid.Value, out x))
{
Xiaobin.Utility.Tool.Alert("請選擇角色", this.Page);
return;
}
hfOpreate.Value = "edit";
txtrolename.Text = litrole.Text;
Xiaobin.Utility.Tool.ExecJs("$.popup.open('#pop')", this.Page);
刪除
int x;
if (!int.TryParse(hfroleid.Value, out x))
{
Xiaobin.Utility.Tool.Alert("請?選?擇?角?色|?", this.Page);
return;
}
new DAL.RoleDAL().Delete(x);
選擇角色。雙擊ListBox控件
hfroleid.Value = lsbrole.SelectedValue;
litrole.Text = lsbrole.SelectedItem.Text;
rep1.DataSource = new DAL.QxDAL().GetListDisinctName();
rep1.DataBind();

循環rep1
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Repeater rep2 = e.Item.FindControl("rep2") as Repeater;
string name = (e.Item.FindControl("litname") as Literal).Text;
rep2.DataSource = new DAL.QxDAL().GetList("modulename='" + name + "'");
rep2.DataBind();
}

循環rep2
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
CheckBox chk = e.Item.FindControl("chk") as CheckBox;
int qxid = int.Parse(chk.ToolTip);
int roleid;
if (int.TryParse(hfroleid.Value, out roleid))
{
if (new DAL.Role_qxDAL().CalcCount("roleid=" + roleid + " and qxid=" + qxid) > 0)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
}
}
確定事件
string name = txtrolename.Text.Trim();
if (hfOpreate.Value == "add")
{
new DAL.RoleDAL().Add(new Model.Role()
{
rolename = name
});
Xiaobin.Utility.Tool.AlertAndGo("新增成功", Request.Url.ToString(), this.Page);
}
else if (hfOpreate.Value == "edit")
{
Model.Role r = new DAL.RoleDAL().GetModel(int.Parse(hfroleid.Value));
if (r != null)
{
r.rolename = name;
}
new DAL.RoleDAL().Update(r);
Xiaobin.Utility.Tool.AlertAndGo("編輯成功", Request.Url.ToString(), this.Page);
}
授權事件
 int roleid;
            if (!int.TryParse(hfroleid.Value, out roleid))
            {
                Xiaobin.Utility.Tool.Alert("請選擇角色", this.Page);
                return;
            }
            foreach (RepeaterItem item in rep1.Items)
            {
                Repeater rep2 = item.FindControl("rep2") as Repeater;
                foreach (RepeaterItem item2 in rep2.Items)
                {
                    CheckBox chk = item2.FindControl("chk") as CheckBox;
                    int qxid = int.Parse(chk.ToolTip);
                    if (chk.Checked)
                    {
                        if (new DAL.Role_qxDAL().CalcCount("roleid=" + roleid + " and qxid=" + qxid) == 0)
                        {
                            new DAL.Role_qxDAL().Add(new Model.Role_qx()
                            {
                                qxid = qxid,
                                roleid = roleid
                            });
                        }
                    }
                    else
                    {
                        if (new DAL.Role_qxDAL().CalcCount("roleid=" + roleid + " and qxid=" + qxid) > 0)
                        {
                            new DAL.Role_qxDAL().DeleteByroleidQxid(roleid, qxid); //DeleteByroleidQxid方法即刪除roleid和qxid方法
                        }
                    }
                }
            }

QXDAL.cs中加上采用distinct方法獲取唯一不同的值    控制按鈕
        public DataSet GetListDisinctName()
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select distinct modulename ");
            strSql.Append(" FROM qx_qx ");           
            Database db = DatabaseFactory.CreateDatabase();
            return db.ExecuteDataSet(CommandType.Text, strSql.ToString());
        }


直接方法
   1)在后臺代碼定義一個bool類型的變量
   bool  IsAdmin=false;
   然后在代碼里,例如在用戶登陸的Click事件里判斷用戶的身份:
   IsAdmin = User.IsInRole("Administrators");
   這段代碼很簡單,它會獲取用戶的角色,如果屬于Administrators角色,則IsAdmin返回true,否則返回false。

   2)在頁面里利用IsAdmin控制控件的可見性
   示意代碼如下:
  <asp:Button ID="btnDelete" Text="刪除" runat="server" Visible='<%#IsAdmin %>'>
   在這段代碼,如果用戶屬于Administrators角色,則IsAdmin返回true,這樣“管理員”就可以看見“刪除”,否則返回false就表示當前用戶無法刪除此紀錄。
主站蜘蛛池模板: 凌海市| 龙岩市| 诏安县| 临清市| 永和县| 常宁市| 郯城县| 濉溪县| 盖州市| 义马市| 朔州市| 离岛区| 屯昌县| 芜湖市| 镇宁| 德惠市| 江川县| 朝阳县| 射洪县| 五台县| 登封市| 长宁县| 西安市| 博客| 沙雅县| 江都市| 瑞昌市| 聊城市| 太湖县| 明星| 莎车县| 萨嘎县| 吴堡县| 汶上县| 山阴县| 汕头市| 威宁| 通山县| 阿鲁科尔沁旗| 建昌县| 原阳县|