当前位置: 首页 > 后端技术 > Java

几行代码搞定 Spring Cloud OAuth2 授权码模式3个页面定制

时间:2023-04-01 17:55:28 Java

几行代码搞定SpringCloudOAuth2授权码方式3页面定制为大家补充一下基础部分,之前的文章如下:实战!SpringBootSecurity+JWT前后端分离架构登录认证!妹子一直没搞懂OAuth2.0,今天就集成SpringCloudSecurity一次来讲解一下!OAuth2.0在行动!使用JWT令牌进行身份验证!OAuth2.0在行动!玩转认证,资源服务异常,自定义这些风骚操作!实际干货!SpringCloudGateway集成OAuth2.0实现分布式统一认证授权!实战!退出时如何通过外力使JWTtoken失效?实战!SpringCloudGateway集成RBAC权限模型,实现动态权限控制!实战!openFeign是如何实现全链接JWTtoken信息不丢失的呢?3注解,微服务认证的优雅实现微服务中使用阿里开源TTL,身份信息线程间优雅复用一个接口SpringCloudOAuth2自定义token返回格式的优雅实现最近订阅《Spring Cloud Alibaba 项目实战》视频朋友问陈又一问题,如下:SpringSecurityOAuth2的授权码模式一直是个难点。如果不了解底层原理,就很难定位问题。今天这篇文章就是针对这位朋友的。回答问题分为以下三个部分:重新定制授权码方式的登录页面重新定制授权码方式的授权页面重新定制授权码方式的异常页面重新定制对OAuth2的授权码模式不了解的可以看陈上一篇文章:妹子一直不懂OAuth2.0,今天整合一次SpringCloudSecurity,给大家讲解清楚!授权码模式登录页面重新定制如下:《Spring Cloud Alibaba 项目实战》实战项目展示默认登录页面是什么样子的,如下图:是不是有点丑?在实际开发中,这个登录页面必须根据自己的系统进行定制。问题来了:如何定制呢?分为以下几步:1.自定义页面Chen随便找了一个前端页面oauth-login.html,代码如下:使用thymeleaf进行渲染2.定义界面跳转需要定义一个界面跳转到inOAuth2授权服务自定义页面,接口如下:@ApiOperation(value="Form登录跳转页面")@GetMapping("/oauth/login")publicStringloginPage(Modelmodel){//返回跳转页面return"oauth-login";}3.SpringSecurity中的配置只需要在SpringSecurity的表单登录中定义跳转接口即可。代码如下:代码解释如下:loginProcessingUrl:这是定义的form表单提交的url。loginPage:这个是定义跳转到登录页面的url,按照上面三步轻松实现自定义登录页面,效果如下:授权码方式的授权页面重新自定义如下:《Spring Cloud Alibaba 项目实战》实战项目来展示默认的授权页面是什么样子的,如下图所示:那么如何自定义呢?这个自定义比较麻烦,需要对SpringSecurity的底层原理有一定的了解1.在自定义页面上,陈老师随机找了一个页面oauth-grant.html,代码如下:2.定义接口到跳转到授权页面url:/oauth/confirm_access的跳转界面,这个接口定义在org.springframework.security.oauth2.provider.endpoint.WhitelabelApprovalEndpoint中,如下:自定义也很简单,只需要模仿这个接口自定义一个覆盖它,实现如下:注意:@SessionAttributes("authorizationRequest")注解必须打上,授权请求信息保存在session中3.修改默认映射地址,因为默认跳转界面是:/oauth/confirm_access,陈刚定义的接口也是/oauth/confirm_access,所以这第3步不用配置也能生效。注意:如果你的跳转界面不是/oauth/confirm_access,按照这一步配置修改就很简单了。只需要配置OAuth2类的认证服务:继承AuthorizationServerConfigurerAdapter的配置,修改配置即可。代码如下:按照以上三步轻松定制授权页面。效果如下:授权码模式下重新自定义异常页面是什么意思?授权码请求url如下:http://localhost:9001/blog-auth-server/oauth/authorize?client_id=mugu&response_type=code&scope=all&redirect_uri=http://www.baidu.com假设我设置租户id(client_id)被更改为数据库中不存在的值,然后将违反异常页面。页面如下:这个异常页面是不是不符合系统要求?它必须是定制的。现成的,我随便写了一个oauth-error.html,代码如下:2.定义接口跳转这个跳转接口的逻辑在AuthorizationE在ndpoint中,如下:所以只需要重新定义一个接口即可跳转,如下:@ApiOperation(value="处理授权异常的跳转页面")@GetMapping("/oauth/error")publicStringerror(Modelmodel){return"oauth-error";}3.修改默认映射地址默认映射地址为/oauth/error,也是Chen自定义的,所以第3步可以省略注意:如果你定义的接口不是/oauth/error需要非常容易地配置和修改。只需要修改OAuth2认证服务的配置类中的配置:继承AuthorizationServerConfigurerAdapter的配置。代码如下:按照以上三个步骤轻松自定义异常页面。效果如下:最后说一句(不要白嫖,求关注)。陈的每篇文章都是用心输出。他写了3个专栏并将它们组织成PDF。获取方式如下:【Java后端面试官】回复关键词SpringCloud进阶获取!《Spring Boot 进阶》PDF:关注公众号:【Java后端面试官】回复关键词SpringBoot进阶get!《Mybatis 进阶》PDF:关注公众号:【Java后端面试官】回复关键字MybatisAdvanced搞定!