✨ Introducing new features. #1982 单点登录sso下跳转 无法传递租户上下文

This commit is contained in:
pig777 committed 2020-11-04 21:02:34 +08:00
1 parent 407a9bb15c
commit ceac667a71
6 files changed
+33 -38

No files matched your search

@@ -22,8 +22,11 @@ package com.pig4cloud.pigx.auth.endpoint;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.admin.api.entity.SysTenant;
import com.pig4cloud.pigx.admin.api.feign.RemoteTenantService;
import com.pig4cloud.pigx.auth.service.PigxTokenDealServiceImpl;
import com.pig4cloud.pigx.common.core.constant.PaginationConstants;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
@@ -39,6 +42,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
/**
@@ -51,9 +55,11 @@ import java.util.Map;
@RequestMapping("/token")
public class PigxTokenEndpoint {
private final ClientDetailsService clientDetailsService;
private final PigxTokenDealServiceImpl dealService;
private final ClientDetailsService clientDetailsService;
private final RemoteTenantService tenantService;
/**
* 认证页面
@@ -63,8 +69,10 @@ public class PigxTokenEndpoint {
*/
@GetMapping("/login")
public ModelAndView require(ModelAndView modelAndView, @RequestParam(required = false) String error) {
R<List<SysTenant>> tenantList = tenantService.list(SecurityConstants.FROM_IN);
modelAndView.setViewName("ftl/login");
modelAndView.addObject("error", error);
modelAndView.addObject("tenantList", tenantList.getData());
return modelAndView;
}
@@ -18,7 +18,16 @@
<div class="container form-margin-top">
<form class="form-signin" action="/token/form" method="post">
<h2 class="form-signin-heading" align="center">统一认证系统</h2>
<input type="text" name="username" class="form-control form-margin-top" placeholder="账号" required autofocus>
<#if tenantList??>
<select class="form-control form-margin-top" placeholder="所属租户" name="TENANT-ID">
<#list tenantList as tenant>
<option value="${tenant.code}">${tenant.name}</option>
</#list>
</select>
</#if>
<input type="text" name="username" class="form-control" placeholder="账号" required autofocus>
<input type="password" name="password" class="form-control" placeholder="密码" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">sign in</button>
<#if error??>
@@ -28,7 +37,7 @@
</div>
<footer>
<p>support by: pig4cloud</p>
<p>email: <a href="mailto:pig4cloud@qq.com">pig4cloud@qq.com</a>.</p>
<p>email: <a href="mailto:support@mail.pigx.vip">support@mail.pigx.vip</a></p>
</footer>
</body>
</html>
@@ -47,11 +47,16 @@ public class TenantContextHolderFilter extends GenericFilterBean {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String tenantId = request.getHeader(CommonConstants.TENANT_ID);
log.debug("获取header中的租户ID为:{}", tenantId);
String headerTenantId = request.getHeader(CommonConstants.TENANT_ID);
String paramTenantId = request.getParameter(CommonConstants.TENANT_ID);
if (StrUtil.isNotBlank(tenantId)) {
TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
log.debug("获取header中的租户ID为:{}", headerTenantId);
if (StrUtil.isNotBlank(headerTenantId)) {
TenantContextHolder.setTenantId(Integer.parseInt(headerTenantId));
}
else if (StrUtil.isNotBlank(paramTenantId)) {
TenantContextHolder.setTenantId(Integer.parseInt(paramTenantId));
}
else {
TenantContextHolder.setTenantId(CommonConstants.TENANT_ID_1);
@@ -1,27 +0,0 @@
package com.pig4cloud.pigx.admin.controller;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import org.springframework.web.bind.annotation.*;
/**
* @author lengleng
* @date 2020/10/13
*/
@Inner
@RequestMapping(value = "/demo", method = RequestMethod.POST)
@RestController
public class DemoController {
@Inner(false)
@GetMapping("/test")
public String demo() {
return "ssucess";
}
@Inner(false)
@GetMapping("/test/{id}")
public String demo2(@PathVariable String id) {
return "ssucess";
}
}
@@ -115,7 +115,7 @@ public class SysRoleController {
* @return 分页对象
*/
@GetMapping("/page")
public R getRolePage(Page page,SysRole role) {
public R getRolePage(Page page, SysRole role) {
return R.ok(sysRoleService.page(page, Wrappers.query(role)));
}
+3 -3
View File
@@ -33,7 +33,7 @@
</organization>
<properties>
<spring-boot.version>2.3.4.RELEASE</spring-boot.version>
<spring-boot.version>2.3.5.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -43,10 +43,10 @@
<spring.checkstyle.version>0.0.23</spring.checkstyle.version>
<git.commit.version>2.2.5</git.commit.version>
<spring-boot-admin.version>2.3.0</spring-boot-admin.version>
<hutool.version>5.4.5</hutool.version>
<hutool.version>5.4.7</hutool.version>
<captcha.version>1.2.4</captcha.version>
<swagger.fox.version>3.0.0</swagger.fox.version>
<knife4j.version>2.0.4</knife4j.version>
<knife4j.version>2.0.7</knife4j.version>
<velocity.version>1.7</velocity.version>
<lcn.version>4.1.0</lcn.version>
<jasypt.version>2.1.1</jasypt.version>