优化单点登录步骤

This commit is contained in:
click33
2021-07-09 02:31:34 +08:00
parent 0a5c5da4b4
commit 936dfe333d
34 changed files with 206 additions and 264 deletions

View File

@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义sa-token版本号 -->
<sa-token-version>1.15.0.RELEASE</sa-token-version>
<sa-token-version>1.21.0</sa-token-version>
</properties>
<dependencies>

View File

@@ -58,7 +58,7 @@ public class ClientAccController {
long userId = getUserIdByOpenid(openid);
// 登录并返回账号信息
StpUtil.setLoginId(userId);
StpUtil.login(userId);
return AjaxJson.getSuccessData(userId).set("openid", openid);
}

View File

@@ -1,14 +1,13 @@
server:
port: 8002
# sa-token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken-client
spring:
# 静态文件路径映射
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/
# static-locations: file:E:\work\project-yun\sa-token\sa-token-demo-oauth2\sa-token-demo-oauth2-client\src\main\resources\static\
# sa-token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken-client

View File

@@ -17,7 +17,7 @@
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<!-- 定义sa-token版本号 -->
<sa-token-version>1.15.0.RELEASE</sa-token-version>
<sa-token-version>1.21.0</sa-token-version>
</properties>
<dependencies>
@@ -39,7 +39,7 @@
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-oauth2</artifactId>
<version>1.15.0-alpha</version>
<version>${sa-token-version}</version>
</dependency>
<!-- sa-token整合redis (使用jackson序列化方式) -->

View File

@@ -19,7 +19,7 @@ public class ServerAccController {
public AjaxJson test(String username, String password) {
System.out.println("------------------ 成功进入请求 ------------------");
if("test".equals(username) && "test".equals(password)) {
StpUtil.setLoginId(10001);
StpUtil.login(10001);
return AjaxJson.getSuccess();
}
return AjaxJson.getError();

View File

@@ -7,7 +7,8 @@ import org.springframework.stereotype.Component;
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.config.SaOAuth2Config;
import cn.dev33.satoken.oauth2.logic.SaOAuth2Interface;
import cn.dev33.satoken.oauth2.logic.SaOAuth2Template;
import cn.dev33.satoken.oauth2.logic.SaOAuth2Util;
/**
* 利用Spring完成自动装配
@@ -24,7 +25,7 @@ public class SaOAuth2SpringAutowired {
* @return 配置对象
*/
@Bean
@ConfigurationProperties(prefix = "spring.sa-token.oauth2")
@ConfigurationProperties(prefix = "sa-token.oauth2")
public SaOAuth2Config getSaOAuth2Config() {
return new SaOAuth2Config();
}
@@ -45,8 +46,8 @@ public class SaOAuth2SpringAutowired {
* @param saOAuth2Interface OAuth2接口Bean
*/
@Autowired(required = false)
public void setSaOAuth2Interface(SaOAuth2Interface saOAuth2Interface) {
SaOAuth2Manager.setInterface(saOAuth2Interface);
public void setSaOAuth2Interface(SaOAuth2Template saOAuth2Interface) {
SaOAuth2Util.saOAuth2Template = saOAuth2Interface;
}

View File

@@ -5,14 +5,14 @@ import java.util.List;
import org.springframework.stereotype.Component;
import cn.dev33.satoken.oauth2.logic.SaOAuth2Interface;
import cn.dev33.satoken.oauth2.logic.SaOAuth2Template;
/**
* 使用oauth2.0 所必须的一些自定义实现
* @author kong
*/
@Component
public class SaOAuth2InterfaceImpl implements SaOAuth2Interface {
public class SaOAuth2TemplateImpl extends SaOAuth2Template {
/*

View File

@@ -1,18 +1,17 @@
server:
port: 8001
# sa-token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken-server
spring:
# 静态文件路径映射
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/
# static-locations: file:E:\work\project-yun\sa-token\sa-token-demo-oauth2\sa-token-demo-oauth2-server\src\main\resources\static\
# sa-token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken-server
# redis配置
redis:
# Redis数据库索引默认为0

View File

@@ -18,14 +18,14 @@ public class SsoClientController {
public String index() {
String str = "<h2>Sa-Token SSO-Client 应用端</h2>" +
"<p>当前会话是否登录:" + StpUtil.isLogin() + "</p>" +
"<p><a href=\"javascript:location.href='/ssoLogin?back=' + encodeURIComponent(location.href);\">登录</a> " +
"<a href=\"javascript:location.href='/ssoLogout?back=' + encodeURIComponent(location.href);\">注销</a></p>";
// "<a href='/ssoLogout' target='_blank'>注销</a></p>"; // 上面是[跳页面]方式,这个是[RestAPI]方式 区别在于是否加了back参数
"<p><a href=\"javascript:location.href='/sso/login?back=' + encodeURIComponent(location.href);\">登录</a> " +
"<a href=\"javascript:location.href='/sso/logout?back=' + encodeURIComponent(location.href);\">注销</a></p>";
// "<a href='/sso/logout' target='_blank'>注销</a></p>"; // 上面是[跳页面]方式,这个是[RestAPI]方式 区别在于是否加了back参数
return str;
}
// SSO-Client端处理所有SSO相关请求
@RequestMapping("/sso*")
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
}

View File

@@ -13,7 +13,7 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
auth-url: http://sa-sso-server.com:9000/ssoAuth
auth-url: http://sa-sso-server.com:9000/sso/auth
# 是否打开单点注销接口
is-slo: true

View File

@@ -19,7 +19,7 @@ import cn.dev33.satoken.util.SaResult;
public class SsoServerController {
// SSO-Server端处理所有SSO相关请求
@RequestMapping("/sso*")
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.serverRequest();
}

View File

@@ -8,8 +8,8 @@ sa-token:
sso:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址 (此处为了方便测试配置为*,线上生产环境一定要配置为详细地地址)
allow-url: http://sa-sso-client1.com:9001/ssoLogin, http://sa-sso-client2.com:9001/ssoLogin, http://sa-sso-client3.com:9001/ssoLogin
# 所有允许的授权回调地址
allow-url: http://sa-sso-client1.com:9001/sso/login, http://sa-sso-client2.com:9001/sso/login, http://sa-sso-client3.com:9001/sso/login
spring:
# Redis配置

View File

@@ -20,7 +20,7 @@ $('.login-btn').click(function(){
// 开始登录
setTimeout(function() {
$.ajax({
url: "ssoDoLogin",
url: "sso/doLogin",
type: "post",
data: {
name: $('[name=name]').val(),

View File

@@ -22,13 +22,13 @@ public class SsoClientController {
public String index() {
String str = "<h2>Sa-Token SSO-Client 应用端</h2>" +
"<p>当前会话是否登录:" + StpUtil.isLogin() + "</p>" +
"<p><a href=\"javascript:location.href='/ssoLogin?back=' + encodeURIComponent(location.href);\">登录</a>" +
" <a href='/ssoLogout' target='_blank'>注销</a></p>";
"<p><a href=\"javascript:location.href='/sso/login?back=' + encodeURIComponent(location.href);\">登录</a>" +
" <a href='/sso/logout' target='_blank'>注销</a></p>";
return str;
}
// SSO-Client端处理所有SSO相关请求
@RequestMapping("/sso*")
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
}

View File

@@ -13,15 +13,15 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
auth-url: http://sa-sso-server.com:9000/ssoAuth
auth-url: http://sa-sso-server.com:9000/sso/auth
# 使用Http请求校验ticket
is-http: true
# SSO-Server端 ticket校验地址
check-ticket-url: http://sa-sso-server.com:9000/ssoCheckTicket
check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
# 打开单点注销功能
is-slo: true
# 单点注销地址
slo-url: http://sa-sso-server.com:9000/ssoLogout
slo-url: http://sa-sso-server.com:9000/sso/logout
# 接口调用秘钥
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor

View File

@@ -21,7 +21,7 @@ import cn.dev33.satoken.util.SaResult;
public class SsoServerController {
// SSO-Server端处理所有SSO相关请求
@RequestMapping("/sso*")
@RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.serverRequest();
}

View File

@@ -9,7 +9,7 @@ sa-token:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址
allow-url: http://sa-sso-client1.com:9001/ssoLogin, http://sa-sso-client2.com:9001/ssoLogin, http://sa-sso-client3.com:9001/ssoLogin
allow-url: http://sa-sso-client1.com:9001/sso/login, http://sa-sso-client2.com:9001/sso/login, http://sa-sso-client3.com:9001/sso/login
# 接口调用秘钥用于SSO模式三的单点注销功能
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# 使用Http请求校验ticket

View File

@@ -20,7 +20,7 @@ $('.login-btn').click(function(){
// 开始登录
setTimeout(function() {
$.ajax({
url: "ssoDoLogin",
url: "sso/doLogin",
type: "post",
data: {
name: $('[name=name]').val(),