Руойи фреймворкПожалуйста, обратитесь к этой статье для преобразования
Личное понимание, может что-то не так)
Нам нужно только изменить часть 3.2 и переписать страницы LoginSsoController и login_sso.vue.
Импортировать зависимости
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.8.23</version>
</dependency>
Метод loginSso() на странице login_sso.vue
loginSso(){
//
//Получаем код в адресной строке
const code = this.$route.query.code;
console.log("code="+code)
//Вызов интерфейса входа в систему
if(code==''||code==undefined||code==null){
//Нет кода в запросе
window.location.replace("http://maxkey-ip:maxkey-port/sign/authz/oauth/v20/authorize?client_id=936712127312297984&response_type=code&redirect_uri=http://ruoyi-ip:ruoyi-port/loginSso");
}else{
this.loading = true;//Включаем анимацию перехода
const loginInfo = {
"code" : code,
};
console.log("code====",code);
//Выполняем еще один набор операций входа в систему
//Если вы не являетесь пользователем этой системы, перейдите на платформу J, чтобы войти.
this.$store.dispatch("LoginSso", loginInfo).then(() => {
this.$message.success("Вход успешен");
this.loading = false;
//Определяем текущую роль
getInfo().then((res) => {
//Процесс входа в систему
this.$router.push({path: this.redirect || "/"}).catch(() => {});
});
}).catch(err=> {
console.log("Информация об исключении", err);
this.loading = false;
});
}
},
См. процесс на официальном сайте MaxKey.
LoginSsoController
/**
* Единый входController
* @author sgc
*/
@Slf4j
@RestController
public class LoginSsoController {
@Autowired
private SysLoginService loginService;
@PostMapping("/loginSso")
public AjaxResult loginSso(String code) {
String body = HttpRequest.get("http://maxkey-ip:maxkey-port/sign/authz/oauth/v20/token?client_id=936712127312297984&client_secret=hnlqMjUxMjIwMjMxNzIwNDAwNTMkgn&grant_type=authorization_code&redirect_uri=http://ruoyi-ip:ruoyi-port/loginSso&code=" + code).execute().body();
JSONObject jsonObject = JSONObject.parseObject(body);
String accesToken = jsonObject.getString("access_token");
String body2 = HttpRequest.get("http://maxkey-ip:maxkey-port/sign/api/oauth/v20/me?access_token=" + accesToken).execute().body();
JSONObject jsonObject2 = JSONObject.parseObject(body2);
String userid = jsonObject2.getString("userid");
//Продолжить здесь Единый Проверка входного токена вышестоящей системой Напишите свою логику
System.out.println("Вызов Sso");
AjaxResult ajax = null;
//Создаем токен для этой системы и передаем его интерфейсу для входа в систему
ajax = AjaxResult.success();
//Установим здесь Единый Пароль по умолчанию для входа пользователя:
String tokenNew = loginService.loginNoCaptcha(userid, "admin123", null);
ajax.put("token", tokenNew);
ajax.put("msg", «Вход успешен»);
return ajax;
}
}
Настроить адрес аутентификации:http://ruoyi-ip:ruoyi-port/loginSso