12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package com.xjrsoft.module.system.service.impl;
- import cn.dev33.satoken.oauth2.logic.SaOAuth2Template;
- import cn.dev33.satoken.oauth2.model.SaClientModel;
- import cn.dev33.satoken.stp.StpUtil;
- import com.baomidou.mybatisplus.core.conditions.Wrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.xjrsoft.common.exception.MyException;
- import com.xjrsoft.module.system.entity.Datasource;
- import com.xjrsoft.module.system.entity.OauthClientDetails;
- import com.xjrsoft.module.system.service.IOauthClientDetailsService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- /**
- * Sa-Token OAuth2.0 整合实现
- */
- @Component
- public class SaOAuth2TemplateImpl extends SaOAuth2Template {
- @Autowired
- private IOauthClientDetailsService oauthClientDetailsService;
- // 根据 id 获取 Client 信息
- @Override
- public SaClientModel getClientModel(String clientId) {
- OauthClientDetails oauthClientDetails = oauthClientDetailsService.getOne(Wrappers.<OauthClientDetails>query().lambda()
- .eq(OauthClientDetails::getClientId, clientId)
- .eq(OauthClientDetails::getStatus, 1));
- if (oauthClientDetails == null) {
- throw new MyException("找不到此数据");
- }
- return new SaClientModel()
- .setClientId(oauthClientDetails.getClientId())
- .setClientSecret(oauthClientDetails.getClientSecret())
- .setAllowUrl(oauthClientDetails.getAllowUrl())
- .setContractScope(oauthClientDetails.getScope())
- .setIsAutoMode(true);
- }
- // 根据ClientId 和 LoginId 获取openid
- @Override
- public String getOpenid(String clientId, Object loginId) {
- // 此为模拟数据,真实环境需要从数据库查询
- return "";
- }
- // 重写 Access-Token 生成策略:复用登录会话的Token
- @Override
- public String randomAccessToken(String clientId, Object loginId, String scope) {
- String tokenValue = StpUtil.createLoginSession(loginId);
- return tokenValue;
- }
- }
|