Spring Security

基于SpringCloud的微服务架构实战案例项目

╄→гoц情女王★ 提交于 2020-08-10 00:06:30
QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册、登录、商品列表展示、商品详情展示、订单创建、详情查看、订单支付、库存更新等等。 github源码地址: https://github.com/backkoms/simplemall 每个业务服务采用独立的MYSQL数据库,初期考虑用到如下组件: 服务注册、发现: eureka 配置管理:spring config , spring security 集群容错: hystrix(待实现) API网关: zuul(待实现) 服务负载:feign+ribbon api文档输出:swagger2 代码简化:lombok 消息队列:rabbitmq 分布式锁: redis (待实现) 链路跟踪:spring cloud sletuh ->zipkin 安全认证:oauth2/JWT(待实现) 服务监控:spring-boot-admin 各模块介绍 模块名称 端口 简介 admin-server 9002 服务监控中心,监控所有服务模块 conf-server 9004 分布式配置中心,结合spring-security/rabbitmq同时使用 eureka-server 9003 服务注册中心,提供服务注册、发现功能 sleuth-server 9001

神奇!自己 new 出来的对象一样也可以被 Spring 容器管理!

这一生的挚爱 提交于 2020-08-09 22:29:51
按理说自己 new 出来的对象和容器是没有关系的,但是在 Spring Security 框架中也 new 了很多对象出来,一样也可以被容器管理,那么它是怎么做到的? 今天来和大家聊一个略微冷门的话题,Spring Security 中的 ObjectPostProcessor 到底是干嘛用的? 本文是 Spring Security 系列第 32 篇,阅读前面文章有助于更好的理解本文: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密码怎么解密了 手把手教你定制 Spring Security 中的表单登录 Spring Security 做前后端分离,咱就别做页面跳转了!统统 JSON 交互 Spring Security 中的授权操作原来这么简单 Spring Security 如何将用户数据存入数据库? Spring Security+Spring Data Jpa 强强联手,安全管理只有更简单! Spring Boot + Spring Security 实现自动登录功能 Spring Boot 自动登录,安全风险要怎么控制? 在微服务项目中,Spring Security 比 Shiro 强在哪? SpringSecurity 自定义认证逻辑的两种方式(高级玩法) Spring Security

恕我直言你可能真的不会java第10篇-集合元素归约

痞子三分冷 提交于 2020-08-09 20:39:43
Stream API为我们提供了 Stream.reduce 用来实现集合元素的归约。reduce函数有三个参数: Identity标识 :一个元素,它是归约操作的初始值,如果流为空,则为默认结果。 Accumulator累加器 :具有两个参数的函数:归约运算的部分结果和流的下一个元素。 Combiner合并器(可选) :当归约并行化时,或当累加器参数的类型与累加器实现的类型不匹配时,用于合并归约操作的部分结果的函数。 注意观察上面的图,我们先来理解累加器: 阶段累加结果作为累加器的第一个参数 集合遍历元素作为累加器的第二个参数 Integer类型归约 reduce初始值为0,累加器可以是lambda表达式,也可以是方法引用。 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); int result = numbers .stream() .reduce(0, (subtotal, element) -> subtotal + element); System.out.println(result); //21 int result = numbers .stream() .reduce(0, Integer::sum); System.out.println(result); //21 String类型归约

spring security oauth2 实战(仿微博第三方登录)

北战南征 提交于 2020-08-09 18:03:27
前言 很久之前写了 4 篇关于 spring security 的入门实战文章 Spring Security 01- 将 Spring security 引入到工程 Spring security 02-自定义用户登录页面和登录处理逻辑 Spring security 03-自定义登录成功后的处理逻辑 Spring security 04-整合 jwt 而在上一篇文章 结合第三方登录案例理解 OAuth2.0 授权码方式 又加深了对 oAuth2.0 协议 - 授权码模式 的理解。 接下来要做的是开发一个基于 spring security oauth2 的 仿微博第三方登录 。 本文要做的事情是: 工程搭建 微博第三方登录流程分析 阅读正文前,请确保已经了解了 oauth2.0 的相关内容,以及 spring-securiy 的入门使用。 正文 几点声明 本文案例是基于 授权码模式 springboot 版本 2.1.6.RELEASE spring-security-oauth2 版本 2.2.0.RELEASE 使用 fastjson 进行 json 字符串与对象之间的转换 页面跳转会从 controller 跳到 前台页面 页面编写使用了 thymeleaf 模版引擎 需要注意的主要是版本问题,其他的只是简单声明下。 微博第三方登录流程 先来熟悉下微博的第三方登录流程。

springSecurity使用

强颜欢笑 提交于 2020-08-09 16:58:27
目录 1.1 依赖包导入 2.1 没有安全机制下的一个web 3.1 做一个安全机制的web 官网https://spring.io/guides/gs/securing-web/ 无情的翻译官。。。。。。 1.1 依赖包导入 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>

精讲RestTemplate第3篇-GET请求使用方法详解

一曲冷凌霜 提交于 2020-08-09 10:46:57
本文是精讲RestTemplate第3篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HTTP客户端类库的切换 RestTemplate可以发送HTTP GET请求,经常使用到的方法有两个: getForObject() getForEntity() 二者的主要区别在于,getForObject()返回值是HTTP协议的响应体。getForEntity()返回的是ResponseEntity,ResponseEntity是对HTTP响应的封装,除了包含响应体,还包含HTTP状态码、contentType、contentLength、Header等信息。 为了方便后续开发测试,首先介绍一个网站给大家。 JSONPlaceholder 是一个提供免费的在线REST API的网站,我们在开发时可以使用它提供的url地址测试下网络请求以及请求参数。或者当我们程序需要获取一些模拟数据、模拟图片时也可以使用它。 一、 getForObject() 方法 1.1.以String的方式接受请求结果数据 在Spring Boot环境下写一个单元测试用例,以String类型接收响应结果信息 @SpringBootTest class

Spring Boot + Spring Security权限控制

点点圈 提交于 2020-08-08 12:26:53
本文在 Spring Boot + Spring Security添加记住我功能 的基础上进行修改 在登录的时候,在UserDetailService中认证并授权,修改UserDetailService @Configuration public class UserDetailService implements UserDetailsService { @Autowired private PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 模拟一个用户,替代数据库获取逻辑 MyUser user = new MyUser(); user.setUserName(username); user.setPassword(this.passwordEncoder.encode("123456")); // 输出加密后的密码 System.out.println(user.getPassword()); //授权 真正的应用中会根据数据中的查询得知 List<GrantedAuthority> authorities = new ArrayList<>(); if

Spring 源码第一篇开整!配置文件是怎么加载的?

拥有回忆 提交于 2020-08-08 12:11:06
上周把话撂出来,看起来小伙伴们都挺期待的,其实松哥也迫不及待想要开启一个全新的系列。 但是目前的 Spring Security 系列还在连载中,还没写完。连载这事,一鼓作气,再而衰三而竭,一定要一次搞定,Spring Security 如果这次放下来,以后就很难再拾起来了。 所以目前的更新还是 Spring Security 为主, 同时 Spring 源码解读每周至少更新一篇 ,等 Spring Security 系列更新完毕后,就开足马力更新 Spring 源码。其实 Spring Security 中也有很多和 Spring 相通的地方,Spring Security 大家文章认真看,松哥不会让大家失望的! 1.从何说起 Spring 要从何说起呢?这个问题我考虑了很长时间。 因为 Spring 源码太繁杂了,一定要选择一个合适的切入点,否则一上来就把各位小伙伴整懵了,那剩下的文章估计就不想看了。 想了很久之后,我决定就先从配置文件加载讲起,在逐步展开,配置文件加载也是我们在使用 Spring 时遇到的第一个问题,今天就先来说说这个话题。 2.简单的案例 先来一个简单的案例,大家感受一下,然后我们顺着案例讲起。 首先我们创建一个普通的 Maven 项目,引入 spring-beans 依赖: <dependency> <groupid>org.springframework

小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查

天大地大妈咪最大 提交于 2020-08-08 05:07:41
Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档? 官方文档注重知识结构的整理,没有注重学习者的学习顺序 官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。 官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。 世界上很多东西都符合2/8原则,本文档的目的是将: 最重要最常用的那20%帮你提炼出来、快速上手应用! 。另外的那80%都是不常用的,有空自己再去官方文档里面学吧! 官网文档地址: https://mybatis.plus/guide/ 我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com 一、Spring Boot整合Mybatis Plus 通过maven坐标引入依赖 <!-- mybatis --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.2</version> </dependency> <!--

有效提高java编程安全性的12条黄金法则

给你一囗甜甜゛ 提交于 2020-08-08 00:58:49
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 安全性是软件开发中最复杂,最广泛和最重要的考量之一。Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞。并且Java生态系统还包括用于分析和报告安全性问题的各种工具。 但是,即使有了可靠的开发平台,也同样要保持警惕。应用程序开发是一项复杂的工作,漏洞会隐藏起来不易发现。程序员应该在应用程序开发的每个阶段都考虑安全性,从类级别的代码编程到API端点授权都应该被考虑在内。 以下为大家介绍的基本规则,可以为构建更安全的Java应用程序奠定良好的基础。供参考学习! Java安全规则1:编写简单而强大的Java代码 漏洞喜欢隐藏在复杂代码中,因此在不牺牲功能的情况下使代码尽可能简单。在代码中公开尽可能少的信息,隐藏实施细节,支持可维护和安全的代码。下面三个技巧将大大有助于编写安全的Java代码: 充分利用 Java的访问修饰符。为类,方法及其属性声明访问级别,可以设为private的所有内容都应该为private。 避免过度使用反射和内省。在某些情况下,应该使用这种高级技术,但是在大多数情况下,您应该避免使用它们。使用反射消除了强类型化,可能会给代码引入漏洞和不稳定性。将类名与字符串进行比较容易出错