国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 抚顺市| 嘉荫县| 介休市| 乌鲁木齐县| 浮山县| 武陟县| 南康市| 大同县| 乐平市| 靖远县| 大港区| 辉南县| 赣州市| 广南县| 句容市| 康乐县| 武鸣县| 洮南市| 宁德市| 隆子县| 根河市| 霸州市| 永安市| 晴隆县| 长阳| 高淳县| 当阳市| 林口县| 商洛市| 泸溪县| 海宁市| 连山| 乐安县| 六枝特区| 衢州市| 沾化县| 武强县| 临漳县| 车险| 奇台县| 安国市|