首先我是通过zuul网关(9001)进行访问登录,auth认证服务器(9002)进行原生框架认证
网上给的常规测试都是通过下面的url
http://192.168.2.18:9002/oauth/authorize?client_id=client&response_type=code,
然后会自动跳转到 /login 方法。

输入用户名和密码然后进行登录,在登录过程中会有一个响应头为:Location。如图:

但是当我们直接输入***http://192.168.2.18:9002/login***时,就会如下图:

这也就导致我们不能通过框架进行登录了。我们需要做的是将这个Location直接换成:
http://192.168.2.18:9002/oauth/authorize?client_id=client&response_type=code
实际需求是用户 只期望输入用户名和密码,其他的什么认证需要由后台操作完成,用户对于这些转换是无感的。希望输入下面URL的方式就能登录了:
http://192.168.2.18:9001/login/doLogin?username=admin&password=123456
这时候我们就可以像下面进行改造了。根据上面出现的情况,进行手动重定向,完成他请求的接力棒!
zuul的controller层写登录方法:***LoginController.java***代码如下
package com.br.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* @Author huangyongliang
* @Date 2020/8/5 14:34
* @Description
**/
@RestController
@Api(tags = "zuul网关进行登录")
@RequestMapping(value = "login", produces = "application/json;charset=UTF-8")
class LoginController {
<

最低0.47元/天 解锁文章





