【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();
        }


三、感受

 

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

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Spring Boot可以使用Spring Security和一些其他的库来实现登录(SSO)。 下面是一个基本的实现流程: 1. 配置认证中心:首先,你需要创建一个认证中心,它将负责管理用户的身份验证和授权。你可以选择使用Spring Security OAuth或者其他开源的认证中心,如Keycloak。你需要配置认证中心的客户端和用户信息。 2. 配置客户端应用程序:在你的Spring Boot应用程序中,你需要配置它作为一个客户端来与认证中心进行通信。你需要提供客户端的详细信息,比如客户端ID、客户端密钥等。 3. 配置登录过滤器:在你的应用程序中,你需要添加一个登录过滤器SSO Filter),它会拦截用户的请求并将其重定向到认证中心进行身份验证。一旦用户成功登录,认证中心会返回一个授权码或者令牌给客户端应用程序。 4. 验证授权码/令牌:在客户端应用程序中,你需要验证从认证中心返回的授权码/令牌。你可以使用相应的库来解析和验证这些令牌。 5. 配置会话管理:一旦用户成功登录并且授权码/令牌被验证通过,你可以在会话中保存用户的身份信息,并使用它来进行后续的请求。 请注意,以上只是一个简的概述,实际实现可能会涉及到更多的细节和配置。你可以参考Spring Security的官方文档和示例代码,以及其他相关的教程来深入了解和实现SSO登录
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值