zoukankan      html  css  js  c++  java
  • 【SSO】--单点登录之过滤器(filter)


        在单点登录的探索中。用到一个知识点:过滤器(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();
            }
    

    三、感受

        一个知识仅仅有给别人讲出来。并且讲懂了,才是真正的学会了。

    不要把全部的事情想的那么难,去做就好了。





  • 相关阅读:
    HDU 5794
    HDU 5794
    3070 Fibonacci 矩阵快速幂
    数论基础
    hdu 1061 Rightmost Digit 快速幂
    poj 2305 Basic remains java
    poj 1001 Exponentiation
    hdu 2054 A == B ? (java)
    java大数练习
    hdu3018 Ant Trip 欧拉回路
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6907391.html
Copyright © 2011-2022 走看看