国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

基于頁面的權限設計原形

2019-11-17 02:11:50
字體:
來源:轉載
供稿:網(wǎng)友
基于頁面的權限設計原形

權限屬性定義:

/// <summary>    /// 權限屬性    /// </summary>    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]    public class accessLevAttribute : Attribute    {        /// <summary>        /// 名稱        /// </summary>        public string Name { get; set; }        /// <summary>        /// 權限        /// </summary>        public string LevStr { get; set; }        /// <summary>        ///         /// </summary>        static Type attrType = typeof(AccessLevAttribute);        public AccessLevAttribute(string name)        {            this.Name = name;        }        public AccessLevAttribute(string name, string levStr)        {            this.Name = name;            this.LevStr = levStr;        }        /// <summary>        /// 解析類屬性        /// </summary>        /// <param name="t"></param>        /// <returns></returns>        public static AccessLevAttribute ParseClass(Type t)        {            return Parse(t.GetCustomAttributes(attrType, false));        }        /// <summary>        /// 解析方法屬性        /// </summary>        /// <param name="m"></param>        /// <returns></returns>        public static AccessLevAttribute ParseMethod(MethodInfo m)        {            return Parse(m.GetCustomAttributes(attrType, false));        }        static AccessLevAttribute Parse(object[] attributes)        {            return (attributes == null || attributes.Length != 1) ? null : attributes[0] as AccessLevAttribute;        }    }

頁面基類:

public class PageBase : System.Web.UI.Page    {        public PageBase()        {            this.Init += new EventHandler(PageBase_Init);        }        void PageBase_Init(object sender, EventArgs e)        {            Type clssType = this.GetType().BaseType;            var classAttr = AccessLevAttribute.ParseClass(clssType); //獲取類上定義的權限數(shù)據(jù)            Response.Write(classAttr == null ? clssType.Name : classAttr.Name);                                    foreach (var m in clssType.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))            {                var a = AccessLevAttribute.ParseMethod(m); //獲取方法上定義的權限數(shù)據(jù)                Response.Write(a == null ? m.Name : a.Name);            }                    }    }

頁面類:

[AccessLev("classAliasName")]    public partial class WebForm1 :PageBase    {        PRotected void Page_Load(object sender, EventArgs e)        {        }        [AccessLev("methodAliasName")]        string Test()        {            return DateTime.Now.ToString();        }    }

驗證在基類中統(tǒng)一完成,相對一般的基于url驗證更安全,且可細化到頁面的方法級


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 方山县| 正定县| 蛟河市| 桂东县| 许昌县| 碌曲县| 万盛区| 南宫市| 闻喜县| 丁青县| 顺平县| 毕节市| 六枝特区| 兰考县| 偃师市| 鸡泽县| 建水县| 察哈| 祥云县| 永平县| 友谊县| 隆化县| 南丹县| 长宁区| 普格县| 山阳县| 梨树县| 沽源县| 英吉沙县| 滦南县| 泊头市| 八宿县| 荆门市| 汝阳县| 宣武区| 南华县| 呼图壁县| 漯河市| 宁陵县| 台湾省| 孝义市|