feat(sso): 新增 sso-server 前后端分离模式下 平台中心模式 demo 示例

This commit is contained in:
click33
2025-11-11 14:51:38 +08:00
parent 75256e3329
commit 5b8b99e0d0
6 changed files with 116 additions and 54 deletions

View File

@@ -0,0 +1,40 @@
// 服务端地址
var baseUrl = "http://sa-sso-server.com:9000";
// sa
var sa = {};
// 打开loading
sa.loading = function(msg) {
layer.closeAll(); // 开始前先把所有弹窗关了
return layer.msg(msg, {icon: 16, shade: 0.3, time: 1000 * 20, skin: 'ajax-layer-load'});
};
// 隐藏loading
sa.hideLoading = function() {
layer.closeAll();
};
// 封装一下Ajax
sa.ajax = function(url, data, successFn) {
$.ajax({
url: baseUrl + url,
type: "post",
data: data,
dataType: 'json',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'satoken': localStorage.getItem('satoken')
},
success: function(res){
console.log('返回数据:', res);
successFn(res);
},
error: function(xhr, type, errorThrown){
if(xhr.status == 0){
return alert('无法连接到服务器,请检查网络');
}
return alert("异常:" + JSON.stringify(xhr));
}
});
}

View File

@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SSO-Server 平台首页</title>
</head>
<body>
<h2>SSO-Server 平台首页 (前后端分离模式) (平台中心模式)</h2>
<p>
<a href='sso-auth.html?client=sso-client3&redirect=http://sa-sso-client1.com:9003/sso/login?back=http://sa-sso-client1.com:9003/'
target='_blank'> 进入Client1系统 </a>
</p>
<p>
<a href='sso-auth.html?client=sso-client3&redirect=http://sa-sso-client2.com:9003/sso/login?back=http://sa-sso-client2.com:9003/'
target='_blank'> 进入Client2系统 </a>
</p>
<p>
<a href='sso-auth.html?client=sso-client3&redirect=http://sa-sso-client3.com:9003/sso/login?back=http://sa-sso-client3.com:9003/'
target='_blank'> 进入Client3系统 </a>
</p>
<!-- scripts -->
<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.min.js"></script>
<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
<script src="./common.js"></script>
<script>
sa.ajax("/sso/isLogin", {}, function(res) {
if(res.data) {
// 已登录...
console.log('已登录,开始操作...');
} else {
layer.msg('未登录,请先登录...')
setTimeout(function(){
location.href = './sso-auth.html';
}, 1000)
}
})
</script>
</body>
</html>

View File

@@ -4,7 +4,7 @@
<title>Sa-SSO-Server 认证中心-登录</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="./login.css">
<link rel="stylesheet" href="./sso-auth.css">
</head>
<body>
<div class="view-box">
@@ -35,9 +35,10 @@
</div>
<!-- scripts -->
<script src="https://unpkg.zhimg.com/jquery@3.4.1/dist/jquery.min.js"></script>
<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.min.js"></script>
<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
<script src="./login.js"></script>
<script src="./common.js"></script>
<script src="./sso-auth.js"></script>
</body>
</html>

View File

@@ -1,43 +1,3 @@
// 服务端地址
var baseUrl = "http://sa-sso-server.com:9000";
// sa
var sa = {};
// 打开loading
sa.loading = function(msg) {
layer.closeAll(); // 开始前先把所有弹窗关了
return layer.msg(msg, {icon: 16, shade: 0.3, time: 1000 * 20, skin: 'ajax-layer-load'});
};
// 隐藏loading
sa.hideLoading = function() {
layer.closeAll();
};
// 封装一下Ajax
sa.ajax = function(url, data, successFn) {
$.ajax({
url: baseUrl + url,
type: "post",
data: data,
dataType: 'json',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'satoken': localStorage.getItem('satoken')
},
success: function(res){
console.log('返回数据:', res);
successFn(res);
},
error: function(xhr, type, errorThrown){
if(xhr.status == 0){
return alert('无法连接到服务器,请检查网络');
}
return alert("异常:" + JSON.stringify(xhr));
}
});
}
// ----------------------------------- 相关事件 -----------------------------------
@@ -47,6 +7,8 @@ var pData = {
redirect: getParam('redirect', ''),
mode: getParam('mode', '')
};
// 提供 redirect 参数时,登录后往 redirect 跳转
if(pData.redirect) {
sa.ajax("/sso/getRedirectUrl", pData, function(res) {
if(res.code == 200) {
// 已登录并且redirect地址有效开始跳转
@@ -57,6 +19,17 @@ sa.ajax("/sso/getRedirectUrl", pData, function(res) {
layer.alert(res.msg);
}
})
} else {
// 未提供 redirect 参数时,登录后往 home 跳转
sa.ajax("/sso/isLogin", {}, function(res) {
if(res.data) {
location.href = './home.html';
} else {
console.log('未登录,请先登录...');
}
})
}
// 登录
$('.login-btn').click(function(){

View File

@@ -17,6 +17,14 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class H5Controller {
/**
* 返回当前是否已经登录
*/
@RequestMapping("/sso/isLogin")
public SaResult isLogin() {
return SaResult.data(StpUtil.isLogin());
}
/**
* 获取 redirectUrl
*/