日期:2014-05-17  浏览次数:20467 次

mvc filters过滤器 自定义授权
怎样自定义一个Filters过滤器来判断已登录用户的权限,就是如果有人不从登录页面进入而是直接打开页面的时候我要判断一下他是否已经登录,若已登录则判断他的权限根据他的权限显示,若他没有这个权限或者没有登录则跳转到登录页面。该怎么实现呢?百度过的都不能用!
mvcfilters过滤器?自定义授权 mvc filters 过滤器 自定义授权

------解决方案--------------------
那得看你的具体登录代码了,一般的做法如:
string userData = "***";
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(***);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
authCookie.Domain = FormsAuthentication.CookieDomain;
authCookie.Secure = false;
HttpContext.Current.Response.Cookies.Add(authCookie);

另外定义权限过滤器,可采取继承BaseController方式解决,BaseController头部添加自定义的过滤器属性如AuthorizeFilter。例:
[AttributeUsage(AttributeTargets.Class 
------解决方案--------------------
 AttributeTargets.Method, AllowMultiple = false)]
    public class AuthorizeFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
           //判断逻辑
        }
    }
这类东西怎么会用不了呢,google都一堆