2019独角兽企业重金招聘Python工程师标准>>>

注意:分析的版本是Springsecurity的4.3.x。

在ExceptionTranslationFilter中使用到AuthenticationEntryPoint,当ExceptionTranslationFilter截获AuthenticationException

或者AccessDeniedException异常时,就会调用AuthenticationEntryPoint的commence。AuthenticationEntryPoint有很多实现类,我们来看下CasAuthenticationEntryPoint,这个与单点登录有关。先上一张图,如下图1所示。

图1 CasAuthenticationEntryPoint的继承图

如果查看Springsecurity的cas那部分的文档,会看到如下List-1所示的内容,

List-1

<bean id="casEntryPoint"class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"><property name="loginUrl" value="https://localhost:9443/cas/login"/><property name="serviceProperties" ref="serviceProperties"/>
</bean><bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"><property name="service" value="https://localhost:8443/cas-sample/login/cas"/><property name="sendRenew" value="false"/>
</bean>

CasAuthenticationEntryPoint的commence方法中,如下List-2所示,方法createServiceUrl和createRedirectUrl是构建调用CAS server的url,方法preCommence是空方法体,最后设置respose的redirect地址,这样浏览器收到的是302状态码,然后浏览器访问List-2中的redirectUrl,redirectUrl的值是"https://localhost:9443/cas/login?service=https://localhost:8443/cas-sample/login/cas"。

List-2 

    public final void commence(final HttpServletRequest servletRequest, final HttpServletResponse response,final AuthenticationException authenticationException) throws IOException,ServletException {final String urlEncodedService = createServiceUrl(servletRequest, response);final String redirectUrl = createRedirectUrl(urlEncodedService);preCommence(servletRequest, response);response.sendRedirect(redirectUrl);}

注:List-2中的createServiceUrl和createRedirectUrl在构造Http请求链接的时候,有点复杂,这里就不再细讲。

转载于:https://my.oschina.net/u/2518341/blog/2874750

Springsecurity之AuthenticationEntryPoint相关推荐

  1. jwt判断token是否过期_4spring-security5整合jwt做登录、权限验证,全网最全!!!可用...

    github源码: https://github.com/gyb123456/spring-security5-jwt,最烦那些写文档只截图一半还不给源码的人,要不你就截全图,要不就给源码! 前言: ...

  2. springsecurity实现自定义SecurityConfigurerAdapter、accessDeniedHandle.authenticationEntryPoint示例

    文章目录 spring properties 1.TokenUtil 自定义 SecurityConfigurerAdapter 自定义corsfilter 自定义AuthenticationEntr ...

  3. SpringSecurity系列 之 AuthenticationEntryPoint接口及其实现类的用法

    1.AuthenticationEntryPoint接口 1.1.简介   被ExceptionTranslationFilter用来作为认证方案的入口,即当用户请求处理过程中遇见认证异常时,被异常处 ...

  4. SpringBoot+SpringSecurity前后端分离+Jwt的权限认证(改造记录)

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/zzzgd_666/article/details/96444829 前言 一般来说,我们用Spr ...

  5. echarts前后端交互数据_SpringBoot2.0实战(26)整合SpringSecurity前后端分离JSON交互...

    在前端的文章中,我们实现了使用 SpringSecurity 实现登录鉴权,并使用数据库存储用户信息,实现登录鉴权 SpringBoot2.0实战(24)整合SpringSecurity之最简登录方法 ...

  6. springboot整个cas_SpringBoot集成SpringSecurity+CAS

    1 简介 本文主要讲述如何通过SpringSecurity+CAS在springboot项目中实现单点登录和单点注销的功能. 2 项目依赖 主要依赖如下 org.springframework.boo ...

  7. springsecurity不拦截某个接口_SpringSecurity 默认表单登录页展示流程源码

    SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程,涉及1.FilterSecurityIntercepto ...

  8. spring-security权限控制详解

    在本例中,主要讲解spring-boot与spring-security的集成,实现方式为: 将用户.权限.资源(url)采用数据库存储 自定义过滤器,代替原有的 FilterSecurityInte ...

  9. @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

    一.说明 SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更 ...

最新文章

  1. beautifulsoup关于标签的初学习
  2. Selenium之定位及切换frame(iframe)
  3. 无法连接到已配置的开发web服务器_你知道多少种服务器?这三种服务器你都认识吗?...
  4. T.38 and the future
  5. 编写java实用工具-针对未压缩的pdf转word,(java实现),压缩过的pdf勿进
  6. 路由选项卡_M32全面培训第四讲——路由配置
  7. 采油工计算机试题库,数字化采油工试题库.doc
  8. Python爬虫扩展库scrapy选择器用法入门(一)
  9. 高光谱图像处理和分析软件(包含雷尼绍Renishaw wdf 文件导入解析功能)
  10. 服务器winsxs文件夹怎么清理工具,win10系统winsxs文件夹该如何删除?win10删除winsxs文件夹的两种方法...
  11. 国内外大数据创业面面观
  12. 高性能Java模板引擎BSL-1.0.1发布
  13. Micheal Nielsen's神经网络学习之三:过拟合与规范化
  14. 为何农历10月1号要祭祖上坟?原来有这么多讲究,你知道吗?
  15. 辛甫生算法c语言,[转载]实变函数,计算方法程序,康托图
  16. 洽谈国内单机游戏下载站
  17. 高德地图红绿灯读秒是怎么实现的?(一)
  18. 千呼万唤始出来,犹抱琵琶半遮面-go语言初识
  19. 软件架构基本技法——打包
  20. 司铭宇老师谈大客户销售技巧之如何做好大客户营销

热门文章

  1. 类的构造函数和析构函数详解
  2. STM32中stm32f0xx_flash.icf文件的作用详解!
  3. 架构探险笔记7-事务管理简介
  4. 令人头疼的clientTop、scrollTop、offsetTop
  5. 气候变迁给社会带来什么变化?
  6. Java虚拟机2:Java内存区域及对象
  7. 【转】C#中的线程 入门
  8. APUE读书笔记 之 进程关系
  9. centos c++ 找不到头文件mysql.h
  10. 一起谈.NET技术,ASP.NET MVC2实现分页和右键菜单