把許可權控製做成使用者控制項--簡易型

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   sp   

大家都知道,程式員是很辛苦的,做為程式開發人員,肯定要想辦法減輕工作量,以獲得足夠多的業餘時間做自己喜歡做的事。做好介面,以方便後續把部分使用者需求轉架到HELPDESK組去,這樣,不但省去了實現的時間,連談需求的時間也省了。其實這篇的功能並不能節省多少時間。反而上一篇的條碼設計節省了相當大的時間。廢話少說,這裡的許可權控制,主要是控制項頁面的簡單的增刪改而已,並沒有對特別欄位做控制的。雖然比較簡單,但也基本能滿足大部分的需求了。這其中只涉及兩個表,表也相當的簡單,分別如下:

USERIGHT: 使用者權限表,結構如下,主要是使用者/群組對應某個模組的許可權。

USERUSER: 使用者與組的關聯表。結構如下。

好了,下面是核心的代碼。

        public void Run()        {            string format = "SELECT MAX(CANREAD) CANREAD,MAX(CANINS) CANINS,MAX(CANDEL) CANDEL,MAX(CANUPD) CANUPD ";            format = format + "FROM USERIGHT where (SUSER=‘{0}‘ OR SUSER IN (SELECT ISA FROMUSERUSER WHERE SUSER=‘{0}‘)) AND MODNAME=‘{1}‘";            SqlConnection connection = new SqlConnection(this.ConnectString);            try            {                connection.Open();                SqlCommand command = new SqlCommand();                command.CommandText = string.Format(format, this.User, this.Module);                command.Connection = connection;                SqlDataReader reader = command.ExecuteReader();                if (reader.Read())                {                    if (reader["CANREAD"] != null)                    {                        if (reader["CANREAD"].ToString().Trim() != "")                        {                            this.ViewState["CANREAD"] = reader["CANREAD"].ToString();                        }                        else                        {                            this.ViewState["CANREAD"] = "0";                        }                    }                    else                    {                        this.ViewState["CANREAD"] = "0";                    }                    if (reader["CANINS"] != null)                    {                        if (reader["CANINS"].ToString().Trim() != "")                        {                            this.ViewState["CANINSERT"] = reader["CANINS"].ToString();                        }                        else                        {                            this.ViewState["CANINSERT"] = "0";                        }                    }                    else                    {                        this.ViewState["CANINSERT"] = "0";                    }                    if (reader["CANDEL"] != null)                    {                        if (reader["CANDEL"].ToString().Trim() != "")                        {                            this.ViewState["CANDELETE"] = reader["CANDEL"].ToString();                        }                        else                        {                            this.ViewState["CANDELETE"] = "0";                        }                    }                    else                    {                        this.ViewState["CANDELETE"] = "0";                    }                    if (reader["CANUPD"] != null)                    {                        if (reader["CANUPD"].ToString().Trim() != "")                        {                            this.ViewState["CANUPDATE"] = reader["CANUPD"].ToString();                        }                        else                        {                            this.ViewState["CANUPDATE"] = "0";                        }                    }                    else                    {                        this.ViewState["CANUPDATE"] = "0";                    }                }                else                {                    this.ViewState["ERRMSG"] = "No record found!";                }                if ((this.ViewState["CANREAD"].ToString() == "0") && (this.ErrMsgPage.Trim() != ""))                {                }            }            catch (Exception exception)            {                this.ViewState["ERRMSG"] = exception.Message;            }            finally            {                connection.Close();            }        }

也是相當的簡單,之所以用max,是取許可權大者。 然後添加幾個屬性就可以封裝成dll。在畫面引用一下。就可以簡單易用了。

畫面載入的時候判斷一下,如果沒許可權則跳轉

其實最上面兩個屬性也可以做成預設的,這樣每個畫面又可以少兩句了。如果畫面涉及到增刪改,也可以加入判斷。即使是grid方面的。參考如下代碼。

  if (e.Item.FindControl("btnDelete") != null)            {                Button button = (Button)e.Item.FindControl("btnDelete");                if (this.Useright1.CanDelete == 0)                {                    button.Attributes.Add("onclick", "alert(‘" + base.GetErrMsgXml(0x3eb) + "‘);return false; ");                }                else                {                    button.Attributes.Add("onclick", "return confirm(‘" + base.GetErrMsgXml(0x3e8) + "‘);");                }            }

前台設定如下,也是相當簡單。

 

這裡沒有技術痛點。涉及的知識也相當簡單。對一些初學者應該有用,如果大牛們有複雜控制的,相當全面的,望不吝賜教。

 

把許可權控製做成使用者控制項--簡易型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.