sso-server 改成 前后端分离登录

This commit is contained in:
Github_lizhw 2024-11-11 19:59:09 +08:00
parent af1c70ed6b
commit 61d647c069
6 changed files with 44 additions and 53 deletions

25
pom.xml
View File

@ -567,31 +567,6 @@
</resources>
</build>
<repositories>
<repository>
<id>public</id>
<name>huawei nexus</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>huawei nexus</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

View File

@ -18,7 +18,6 @@ spring:
# dubbo
dubbo:
config:
protocol:
name: tri
port: 20881

View File

@ -25,11 +25,6 @@
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -21,32 +21,12 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 没有loadbalancer调用会报错 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
<!-- SpringBoot Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 视图引擎(在前后端不分离模式下提供视图支持) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>

View File

@ -3,8 +3,13 @@ package org.ruoyi.sso.server.controller;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.sso.config.SaSsoServerConfig;
import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
import cn.dev33.satoken.sso.processor.SaSsoServerProcessor;
import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.sso.util.SaSsoConsts;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
import cn.hutool.core.util.ObjectUtil;
import org.ruoyi.sso.server.domain.vo.LoginVo;
import org.ruoyi.sso.server.service.IAuthStrategy;
@ -87,6 +92,41 @@ public class SsoServerController {
return R.ok(loginVo);
}
// 当前是否登录
@RequestMapping("/sso/isLogin")
public Object isLogin() {
return SaResult.data(StpUtil.isLogin());
}
/**
* 获取 redirectUrl
*/
@RequestMapping("/sso/getRedirectUrl")
public SaResult getRedirectUrl(String redirect, String mode, String client) {
// 未登录情况下返回 code=401
if (!StpUtil.isLogin()) {
return SaResult.code(401);
}
// 已登录情况下构建 redirectUrl
redirect = SaFoxUtil.decoderUrl(redirect);
if (SaSsoConsts.MODE_SIMPLE.equals(mode)) {
// 模式一
SaSsoUtil.checkRedirectUrl(redirect);
return SaResult.data(redirect);
} else {
// 模式二或模式三
String redirectUrl = SaSsoUtil.buildRedirectUrl(StpUtil.getLoginId(), client, redirect);
return SaResult.data(redirectUrl);
}
}
// SSO-Server单点注销
@RequestMapping("/sso/logout")
public Object ssoSignout() {
return SaSsoClientProcessor.instance.ssoLogoutByMode2();
}
// 配置SSO相关参数
@Autowired
private void configSso(SaSsoServerConfig ssoServer) {

View File

@ -37,8 +37,8 @@ sa-token:
# 读写同源,开启后每次访问都会自动续期
# token名称 (同时也是cookie名称)
token-name: Authorization
# cookie写入 TODO 后续必须关掉cookie 有安全隐患
is-read-cookie: true
# cookie写入 必须关掉cookie 有安全隐患
is-read-cookie: false
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时是否共用一个token (为true(默认)时所有登录共用一个token, 为false时每次登录新建一个token)这个为false会导致登陆多次后redis内存的token不能很好释放
@ -52,6 +52,8 @@ sa-token:
ticket-timeout: 300
# 所有允许的授权回调地址 TODO 生产和测试一定要改
allow-url: "*"
auth-url: http://localhost:5173/#/sso-login
active-timeout: 30
# ruoyi-security配置