roydux,2010年1月25日
ASP.NET MVC中有一个基础的过滤器基类:FilterAttribute
public class AuthorAttribute : FilterAttribute,IAuthorizationFilter
{
#region IAuthorizationFilter 成员
public void OnAuthorization(AuthorizationContext filterContext)
{
string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
string action = filterContext.ActionDescriptor.ActionName.ToLower();
ModelEntites me = new ModelEntites();
AuthorInfo author = me.AuthorInfo.First(a => a.Controller == controller && a.Action == action);
UserInfo userInfo = me.UserInfo.FirstOrDefault(u => u.UserID == 1);
if (userInfo == null)
{
Do(filterContext);
return;
}
userInfo.RoleInfoReference.Load();
RoleAuthorInfo raInfo = me.RoleAuthorInfo.First(ra => ra.AuthorInfo.AuthorID == author.AuthorID && ra.RoleInfo.RoleID == userInfo.RoleInfo.RoleID);
if(raInfo == null)
{
Do(filterContext);
}
}
private void Do(AuthorizationContext filterContext)
{
string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
string action = filterContext.ActionDescriptor.ActionName.ToLower();
filterContext.Controller.TempData["msg"] = "木有权限";
filterContext.Controller.TempData["url"] = "";
filterContext.Controller.TempData["from_controller"] = controller;
filterContext.Controller.TempData["from_action"] = action;
filterContext.HttpContext.Response.Redirect(filterContext.HttpContext.Request.ApplicationPath + string.Format("Home/Index/"));
}
#endregion
}
在要限制的Controller上加声明即可:
[AuthorAttribute]
public class HelloController : Controller
访问该controller中的action,会被限制,也可以加到action前面。
Tags: asp.net mvc filter
分类: .NET | 评论:1 | 浏览:
相关文章:
网站目录
最近发表