【SSO】--单点登录之过滤器(filter)

来源:互联网 发布:ios wkwebview 传值js 编辑:程序博客网 时间:2024/04/30 12:28

    在单点登录的探索中,用到一个知识点:过滤器(filter)。常见的几种验证:Authorization filters,验证用户是否有权限访问页面;Action Filter,验证用户登录的时候是否用户信息存在;异常处理,比如session过期后可以返回登录页面等等。


一、Filter包含什么?


filter主要分为四种,遍布于MVC,从页面请求到授权,到访问资源的各个阶段。

Authorization filters:用于处理验证处理相关的操作

Action filters:在Controller中Action处理的开始和结束做拦截操作

Result filters:在View呈现前和呈现后做处理

Exception filters:只要是添加了Exception Filter的请求中出现异常,都会被拦截。


下面是filter在MVC中的作用顺序:




二、Filter的小demo


子系统登录权限前,需要经过filter过滤,看是否能查到本地的cookie值进行验证。如下是filter中代码:

  public class MemberValidationAttribute:AuthorizeAttribute    {        public override void OnAuthorization(AuthorizationContext filterContext)        {            //读取用户登录权限和信息            var memberValidation = filterContext.HttpContext.Request.Cookies.Get("selfUserInfo");            //如果为空,就跳转到登录页;如果不为空,就返回一开始请求的页面            if (memberValidation == null)            {                filterContext.Result=new RedirectToRouteResult(new RouteValueDictionary                    (new {controller="Account",aciton="LogOn"                    }));                return;             }            return;                    }    }


子系统只需要在ActionResult上面打一个[MemberValidation]即可在登录的时候访问filter。

        [MemberValidation]                public ActionResult ChangePassword()        {            return View();        }

三、感受

    一个知识只有给别人讲出来,而且讲懂了,才是真正的学会了。不要把所有的事情想的那么难,去做就好了。




1 0
原创粉丝点击