当前位置: 首页 > news >正文

极其抽象的SpringSecurity理解

原始:A   →   B

Security:A →  S →  B                太抽象了,看不懂啊T_T

抽象故事

故事大概:C是一个大区,拥有巨大的火力(C准备联合B吞并掉A),A得到了这个消息,派出间谍伪装成B区人,对C进行爆破,C开始怀疑B是假合作,但又不能明目张胆去破坏联盟又不能完全相信B,于是在BC大桥的C区进口建立海口进行对B区来的人进行防范

在理想状态下,我们是属于互不侵犯原则,但是呢,理想不是现实,总有人会因为某种原因进行攻击我们,在这种情况下,我们需要建立自己的海关进行防范,SpringSecurity就是一个目前具有实战经验的一种门

检查内容

第一层验证:我们要验证什么,进行对什么的验证,是只要进来的都要通过验证,还是部分需要验证

authorizeHttpRequests()

第二次验证:居民信息认证(用户登录认证)userDetailsService()

第三层验证:进入验证,fromLougin

第四层验证:离开验证,logout

第五层验证:是否为跳转人员,csrf

第六层构建:build

    @Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception{return http.authorizeHttpRequests(authorizeChen ->{authorizeChen.anyRequest().authenticated();}).formLogin(Login ->{Login.loginProcessingUrl("/api/auth/login");Login.successHandler(new AuthenticationSuccessHandler() {
//                        成功登录响应的内容@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {response.setCharacterEncoding("gbk");response.getWriter().write(JSONObject.toJSONString(jsonEntity.json("登录成功")));}});
//                       登录失败响应内容Login.failureHandler(new AuthenticationFailureHandler() {@Overridepublic void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {response.setCharacterEncoding("gbk");response.getWriter().write(JSONObject.toJSONString(jsonEntity.failureJson(302,exception.getMessage())));}});}).logout(Logout ->{Logout.logoutUrl("/api/auth/logout");}).userDetailsService(userservice).csrf(AbstractHttpConfigurer::disable).build();}

相关文章:

  • 【前端工程化面试题】webpack proxy的工作原理,为什么能解决跨域问题
  • devc++ 使用 winsock 实现 UDP 广播
  • Rust 初体验6
  • phpstrom创建thinkphp项目
  • 【Webpack】处理 js 资源
  • C++运算符重载(日期类的运算符重载为例)
  • js---webAPI
  • 原型设计模式
  • 工作心得——css让元素居中的方法
  • 嵌入式linux驱动开发篇之设备树
  • php 数组函数
  • 关于jupyter的一些小笔记
  • Linux第48步_编译正点原子的出厂Linux内核源码
  • 【精选】Java面向对象进阶——接口细节:成员特点和接口的各种关系
  • 随想录刷题笔记 —二叉树篇7 617合并二叉树 700二叉搜索树中的搜索 98验证二叉搜索树
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • crontab执行失败的多种原因
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • mysql_config not found
  • node入门
  • Otto开发初探——微服务依赖管理新利器
  • passportjs 源码分析
  • Redash本地开发环境搭建
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 学习HTTP相关知识笔记
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • nb
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #NOIP 2014#Day.2 T3 解方程
  • (4)STL算法之比较
  • (二)WCF的Binding模型
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • .Mobi域名介绍
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET 8.0 中有哪些新的变化?
  • .Net IOC框架入门之一 Unity
  • .net 发送邮件
  • .NET 解决重复提交问题
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @AliasFor注解
  • @Autowired注解的实现原理
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [20161214]如何确定dbid.txt
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析