ASP.NET本身拥有membership角色权限♦系统,但是这个◢自带的系□□统不够灵□□□□活和强大,有时候操□□□□作起来比❖较繁琐,这里OETY欧亿介绍□□一种如何●根据控制□□□□器和方法□□自动判定□□□权限,简单方便。
首先是定□□义一个类□□继承ActionFilterAttribute类,然后重新□□□方法OnActionExecuting 编写如下□□□□代码
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
//没有登录执行的操作
}
else
{
//判断是否存在角色
FormsIdentity user = (FormsIdentity)HttpContext.Current.User.Identity;
var au = db.AdminUser.Where(a => a.username == user.Name).ToList();
if (au.Count > 0)
{
// string purview= au[0].group.purview;
bool is_authorize = true;
string error_msg = "没有权限访问!";
string model = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString();
BLLAdminUser admin_user = new BLLAdminUser();
string purview=admin_user.getCheckPurview(model, action);//判断权限
string mypurview = admin_user.getMyPurview();
is_authorize=admin_user.inPurview(purview, mypurview);
if (!is_authorize)
{
//如果验证不通过执行的方法
}
}
}
}
然后在控□□□制器或方□□□法前面加□□□上[Authorize]验证标记□□□就行了。