导读:

最近一直在集成springcloud+oauth2授权登录,密码模式和自定义的短信验证码已经按照网上的教程集成好了,

其中也有很多坑,,网上的教程大多参差不齐,缺这缺那,好像没有一个完整可跑起来的demo。

废话不说,先说现象,问下你们是不是报这个错:

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_登录验证

现象还原:

一,调用oauth2授权码登录

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_java_02

 二、因为没有登录,所以会跳转到登录页面,

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_java_03

三,输入密码跳转到授权页面

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_登录验证

 分析问题:

1,网上大量查资料,有一个比较类似现象的blog,按照他搞的完全没有效果,可能只针对他个人出现的问题有效,附上链接,大家可以参阅一下,也许,你们出现的问题,他可以有助于解决,

2,自己debug,一步一步看源码,主要思路如下,首先,我们进行oauth2的授权码登录的时候,会把请求放入saverequest进行存储,通过session存储

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_java_05

然后,我们进行登录,登录验证通过之后,会从这个类中取request,结果取出来是空的,然后跳转报错

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_自定义_06

 ,,,最后自己不断琢磨是还说呢么情况,发现是由于初始请求的ip和跳转的ip不一样导致的,这样会出现无法取出session,session为空,就无法取出request,然后就没有targeturl。到此问题就解决了,初始的请求如下:http://192.168.0.41:8866/whfmc-microservice-auth/oauth/authorize?response_type=code&client_id=admin-app&redirect_uri=http://localhost:2222/login&state=123正确的跳转页面为:

gitlab oAuth2 gitlaboauth2Login后如何跳转页面_java_07

拿到code,我们就可以去请求accesstoken啦,最后,细心的小伙伴是不是有点发现,为什么code和你们的不一样,变长了,是的,没错,我自定义了code的长度,增加了安全性,,怎么做到的,网上也应该有一大把,你们可以自行百度,,下期,如果小伙伴有留言需要告知怎么配置的话,我会出一个教程,绝对不会坑你们