标签:
权限属性定义:
/// <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); //获取类上定义的权限数据
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); //获取方法上定义的权限数据
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();
}
}
验证在基类中统一完成,相对一般的基于url验证更安全,且可细化到页面的方法级
标签:
原文地址:http://www.cnblogs.com/jiang_zheng/p/4632793.html