4.3.6 Controller AuthController代码如下: [mw_shl_code=applescript,true]@RestController public class AuthController implements AuthControllerApi {
@Value("${auth.clientId}")
String clientId;
@Value("${auth.clientSecret}")
String clientSecret; @Value("${auth.cookieDomain}")
String cookieDomain;
@Value("${auth.cookieMaxAge}")
int cookieMaxAge;
@Value("${auth.tokenValiditySeconds}")
int tokenValiditySeconds; @Autowired AuthService authService;
@Override
@PostMapping("/userlogin")
public LoginResult login(LoginRequest loginRequest) {
//校验账号是否输入
if(loginRequest == null || StringUtils.isEmpty(loginRequest.getUsername())){
ExceptionCast.cast(AuthCode.AUTH_USERNAME_NONE);
}
//校验密码是否输入
if(StringUtils.isEmpty(loginRequest.getPassword())){
ExceptionCast.cast(AuthCode.AUTH_PASSWORD_NONE);
}
AuthToken authToken = authService.login(loginRequest.getUsername(), loginRequest.getPassword(), clientId, clientSecret);
//将令牌写入cookie
//访问token
String access_token = authToken.getAccess_token();
//将访问令牌存储到cookie
saveCookie(access_token); return new LoginResult(CommonCode.SUCCESS,access_token);
}
//将令牌保存到cookie
private void saveCookie(String token){
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
//添加cookie 认证令牌,最后一个参数设置为false,表示允许浏览器获取
CookieUtil.addCookie(response, cookieDomain, "/", "uid", token, cookieMaxAge, false);
}
@Override
@PostMapping("/userlogout")
public ResponseResult logout() {
return null;
} } [/mw_shl_code] 4.3.7 登录url放行 认证服务默认都要校验用户的身份信息,这里需要将登录url放行。

在WebSecurityConfig类中重写 configure(WebSecurity web)方法,如下:

[mw_shl_code=applescript,true]@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/userlogin");
} [/mw_shl_code] 4.3.8 测试认证接口 使用postman测试: Post请求:http://localhost:40400/auth/userlogin

4.3.9 测试写入Cookie cookie最终会写到xuecheng.com域名下,可通过nginx代理进行认证,测试cookie是否写成功。 1、配置nginx代理 在ucenter.xuecheng.com下配置代理路径

[mw_shl_code=applescript,true]#认证 location ^~ /openapi/auth/ { proxy_pass http://auth_server_pool/auth/; } [/mw_shl_code] 添加:

[mw_shl_code=applescript,true]#认证服务 upstream auth_server_pool{ server 127.0.0.1:40400 weight=10;
}[/mw_shl_code] 2、请求:http://ucenter.xuecheng.com/openapi/auth/userlogin 观察cookie写入结果