4.2 Feign 拦截器 4.2.1 定义Feign拦截器 微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT. 在common工程添加依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring‐cloud‐starter‐openfeign</artifactId> </dependency> 拦截器…
3 Spring Security Oauth2研究 3.1 目标 本项目认证服务基于Spring Security Oauth2进行构建,并在其基础上作了一些扩展,采用JWT令牌机制,并自定 义了用户身份信息的内容. 本教程的主要目标是学习在项目中集成Spring Security Oauth2的方法和流程,通过 spring Security Oauth2的研究需要达到以下目标: 1.理解Oauth2的授权码认证流程及密码认证的流程. 2.理解spring Security Oauth2的工…
这是轮播图的原始文件 运行门户需要把 nginx启动起来 单独运行轮播图.把里面的css的引用都加上网址的url 这就是单独访问到的轮播图的效果 轮播图模板的地址: 阶段5 3.微服务项目[学成在线]·\day04 页面静态化\代码\index_banner.ftltest-freemarker的服务内.模板的html文件,复制过来.然后改了名字后缀叫做index_banner.ftl FreemarkerController内 新加一个方法 返回为轮播图的模板地址 http://localho…
提供了基于脚手架封装好的前端工程 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段5 3.微服务项目[学成在线]·\day02 CMS前端开发\资料\xc-ui-pc-sysmanage.7z _all的是完整的.不带all的是手写的第一部分的 解压出来 ,这里应包括了所有的依赖 build构建工程相关的js webStorm打开 config里面有一些配置文件 index.js里面会设置代理 工程启动后对外暴露一个接口11000 sysConfig.js自己…
2.2 Oauth2认证 2.2.1 Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的 接口协议. OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.同时,任何第三方都可以使用OAUTH认 证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的.业界提供了OAUTH的多种实 现如PHP.JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAU…
1.1 用户认证与授权 截至目前,项目已经完成了在线学习功能,用户通过在线学习页面点播视频进行学习.如何去记录学生的学习过程 呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程:如果用户要购 买课程也需要知道用户的身份信息.所以,去管理学生的学习过程最基本的要实现用户的身份认证. 什么是用户身份认证? 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问.常见的用户身份认 证表现形式有:用户名密码登录,指纹打卡等方式. 什么是用户…
1 Vue.js与Webpack研究 开发版的浏览器:https://www.google.cn/intl/zh-CN/chrome/dev/ 前端的开发框架:微服务项目开发学成在线_Vue.js与Webpack 使用了webpack之后就不能采用传统js的调试方法在chrome中打断点.1.在webpack.config.js中配置: devtool: 'eval‐source‐map', 16-CMS前端工程创建-导入系统管理前端工程  2.1 导入系统管理前端工程 CMS系统使用Vue-c…
05-CMS需求分析-什么是CMS 什么是CMS?CMS (Content Management System)即内容管理系统,不同的项目对CMS的定位不同.CMS有哪些类型? 每个公司对每个项目的CMS定位不同,CMS基本上分为:针对后台数据内容的管理.针对前端页面的管理.针对样式风格的管理等 . 本项目CMS的定位是什么? 本项目作为一个大型的在线教育平台,对CMS系统的定位是对各各网站(子站点)页面的管理,主要管理由于运营需要而经常变动的页面,从而实现根据运营需要快速进行页面开发.上线的需…
我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要在子工程内引入eureka的包.那么这一些列相关的依赖jar包就自动的引进来.并且版本也 不用你管了.因为父工程已经锁定了Sring Cloud的版本. 引入后刷新一下包 spring cloud全部是基于Spring boot进行的开发,所以我们引入了Spring Cloud 后,springBo…
1 Eureka注册中心 1.1 需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中 心来管理微服务信息. 为什么 要用注册中心? 1.微服务数量众多,要进行远程调用就需要知道服务端的ip地址和端口,注册中心帮助我们管理这些服务的ip和 端口. 2.微服务会实时上报自己的状态,注册中心统一管理这些微服务的状态,将存在问题的服务踢出服务列表,客户 端获取到可用的服务进行调用. A要想调用B的服务就必须知道服务的地址 ip和端口…
4 Zuul网关 4.1 需求分析 网关的作用相当于一个过虑器.拦截器,它可以拦截多个系统的请求. 本章节要使用网关校验用户的身份是否合法. 4.2 Zuul介绍 什么是Zuul? Spring Cloud Zuul是整合Netflix公司的Zuul开源项目实现的微服务网关,它实现了请求路由.负载均衡.校验过 虑等 功能. 官方:https://github.com/Netflix/zuul 什么是网关? 服务网关是在微服务前边设置一道屏障,请求先到服务网关,网关会对请求进行过虑.校验.路由等处…
cms和课程的微服务重启 从数据库内找一条数据 进入到了断点 拼装课程信息 ,然后进行远程调用 抛出异常 可能是开了两个cms服务的事,负载均衡 到了另外一个服务里面 ,关掉一个 把02关掉,重启cms01 eureka服务也重启下,因为刚才关掉了一个cms的服务 如果要远程调用,需要增加无参构造方法.所以必须在这里个里面增加一个无参的构造方法 再次重启 课程的服务 远程调用后页面返回了null 在cms服务里面加断点测试 更新的时候id为null了. cmsPage这个对象为空了 这里变量写错…
2.1.2 Ribbon测试 Spring Cloud引入Ribbon配合 restTemplate 实现客户端负载均衡.Java中远程调用的技术有很多,如: webservice.socket.rmi.Apache HttpClient.OkHttp等,互联网项目使用基于http的客户端较多,本项目使 用OkHttp. 现在要实现课程去服务去调用cms服务.调用放course服务就是客户端 在course服务里面 采用客户端负载均衡的方式来调用cms. 首先加入ribbon的包和okhttp的…
4.1 需求分析 前边章节已经实现了用户携带身份令牌和JWT令牌访问微服务,微服务获取jwt并完成授权. 当微服务访问微服务,此时如果没有携带JWT则微服务会在授权时报错. 测试课程预览: 1.将课程管理服务和CMS全部添加授权配置 2.用户登录教学管理前端,进入课程发布界面,点击课程发布,观察课程管理服务端报错如下: 给cms的服务也接入认证 刷新包 复制授权的资源配置类 复制到cms的工程 复制公钥 cms的微服务重启下-测试 修改发布就要调用cms的服务了 点击修改发布 提示系统繁忙 控制…
携带JWT授权 登陆后jwt已经存到了sessionStorage里面 当进行微服务的请求就要携带令牌.我们在拦截器里面做文章. 在axios的intercepters拦截器上 手工的给这个课程 造一个图片的数据 刷新页面图片就有了.图片不显示的原因是因为图片的服务没有起来. 跟踪请求,在请求的时候把jwt带上了 点击课程计划 就没有权限 没有权限 给用户一个提示 请求后的拦截器 结束…
4 前端集成认证授权 4.1 需求分析 截至目前认证授权服务端的功能已基本完成,本章实现前端集成认证授权功能. 前端集成认证授权功能需要作如下工作: 1.前端页面校验用户的身份,如果用户没有登录则跳转到登录页面 2.前端请求资源服务需要在http header中添加jwt令牌,资源服务根据jwt令牌完成授权. 哪些功能需要前端请求时携带JWT? 用户登录成功请求资源服务都需要携带jwt令牌,因为资源服务已经实现了jwt认证,如果校验头部没有jwt则会认为 身份不合法. 前端携带jwt访问网关,网…
1 用户授权业务流程 用户授权的业务流程如下: 业务流程说明如下: 1.用户认证通过,认证服务向浏览器cookie写入token( 身份令牌) 2.前端携带token请求用户中心服务获取jwt令牌 前端获取到jwt令牌解析,并存储在sessionStorage 3.前端携带cookie中的身份令牌及jwt令牌访问资源服务 前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是http header中的jwt 前端请求资源服务前在http header上添加jwt请求资源…
下面要完成  5.6两个步骤 3.3.4 资源服务授权 3.3.4.1 资源服务授权流程 资源服务拥有要访问的受保护资源,客户端携带令牌访问资源服务,如果令牌合法则可成功访问资源服务中的资 源,如下图: 上图的业务流程如下: 1.客户端请求认证服务申请令牌 2.认证服务生成令牌 认证服务采用非对称加密算法,使用私钥生成令牌. 3.客户端携带令牌访问资源服务 客户端在Http header 中添加: Authorization:Bearer 令牌. 4.资源服务请求认证服务校验令牌的有效性 资源服…
2.3 Spring security Oauth2认证解决方案 本项目采用 Spring security + Oauth2完成用户认证及用户授权,Spring security 是一个强大的和高度可定制的身 份验证和访问控制框架,Spring security 框架集成了Oauth2协议,下图是项目认证架构图: 1.用户请求认证服务完成认证. 2.认证服务下发用户身份令牌,拥有身份令牌表示身份合法. 3.用户携带令牌请求资源服务,请求资源服务必先经过网关. 4.网关校验用户身份令牌的合法,不…
3.4.1需求分析 要想实现只查询自己的课程信息则需要获取当前用户所属的企业id. 1.认证服务在用户认证通过将用户所属公司id等信息存储到jwt令牌中. 2.用户请求到达资源服务后,资源服务需要取出header中的jwt令牌,并解析出用户信息. 说明令牌中已经有公司的id了 controller拿到request 继承BaseController 那么就可以直接拿到了request对象. Oauth2Util就是解析jwt里面的令牌数据 这样就拿到了单位id 重启课程服务 换用户登陆…
4.2 Redis配置 4.2.1 安装Redis 1.安装Redis服务 下载Windows版本的redis:https://github.com/MicrosoftArchive/redis/tags 下载Redis-x64-3.2.100版本,解压Redis-x64-3.2.100.zip 进入cmd命令行,进入Redis-x64-3.2.100目录. redis‐server redis.windows.conf 出现 下图说明 redis启动成功: 注册为服务: redis‐serve…
3.6 JWT研究 3.6.1 JWT介绍 在介绍JWT之前先看一下传统校验令牌的方法,如下图: 问题: 传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根 据令牌获取用户的相关信息,性能低下. 解决: 使用JWT的思路是,用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带 JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权. JWT令牌授权过程如下图: 资源服务有…
1 我的课程 1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查询要实现分页.会存在多表关联查询,所以建议使用mybatis实现我的课程查询. 1.2 PageHelper 1.2.1 PageHelper介绍 PageHelper是mybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句, 最终实现分页查询功能.…
用户认证 用户认证流程分析 用户认证流程如下: 业务流程说明如下: 1.客户端请求认证服务进行认证.2.认证服务认证通过向浏览器cookie写入token(身份令牌)认证服务请求用户中心查询用户信息.认证服务请求Spring Security申请令牌.认证服务将token(身份令牌)和jwt令牌存储至redis中.认证服务向cookie写入 token(身份令牌).3.前端携带token请求认证服务获取jwt令牌前端获取到jwt令牌并存储在sessionStorage.前端从jwt令牌中解析中用…
2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是课程管理服务远程调用CMS服务的流程图: 1.cms服务将自己注册到注册中心. 2.课程管理服务从注册中心获取cms服务的地址. 3.课程管理服务远程调用cms服务. 2.1 Ribbon 2.1.1 Ribbon介绍 Ribbon是Netflix公司开源的一个负载均衡的项目(https://git…
cms相当于客户端 配置客户端的信息 后面加逗号分隔开 50102表示向两台eureka服务上报服务,如果有一台死掉了 那么还可以上另外的一台去注册服务 直接把ip注册到eureka 启动类加注解 重启cms的服务.eureka的注册列表内 就可以看到cms的微服务了 eureka2也有了 课程管理也注册到微服务 先加入依赖.然后刷新包 启动类加注解 配置文件内 client端的配置 启动课程管理的微服务 日志级别改成info 因为启动控制台 输出了太多的信息 结束…
修改认证服务的UserDetailServiceImpl类,下边的代码中 permissionList列表中存放了用户的权限, 并且将权限标识按照中间使用逗号分隔的语法组成一个字符串,最终提供给Spring security. 授权是SpringSecuriy的本职工作, 虽然可以在UserJwt里面扩充属性 UserJwt的构造方法的第三个参数就是权限. 自谦我们写的代码 权限暂时用的静态的 最终把权限转换成了字符串,放在了 UserJwt的构造方法的第三个参数上. 所以SpringSecur…
远程 调用Spring Security来申请令牌,然后把申请到令牌存储到redis里面 cookieMaxAge: ‐1   -1表示浏览器一关闭cookie就失效. 测试远程申请令牌 TestClient 注入RestTemplate,来实现远程调用 令牌请求的地址是40400局势当前auth项目的端口. 认证服务最终会把自己注册到eureka 所以远程调用,建议从eureka中来拿地址.注入LoadBalancerClient,这是客户端负载均衡器,用来请求eureka拿到请求列表,从中选…
新建一个module 选择parent test-freemarker spring‐boot‐starter‐freemarker:spring boot 提供的关于 freemaker的相关的包 lombok:写模型类需要. okhttp:远程访问的包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-…