| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package com.xjrsoft.module.system.controller;
- import cn.dev33.satoken.config.SaCookieConfig;
- import cn.dev33.satoken.context.SaHolder;
- import cn.dev33.satoken.context.model.SaCookie;
- import cn.dev33.satoken.context.model.SaRequest;
- import cn.dev33.satoken.context.model.SaResponse;
- import cn.dev33.satoken.oauth2.config.SaOAuth2Config;
- import cn.dev33.satoken.oauth2.logic.SaOAuth2Handle;
- import cn.dev33.satoken.spring.SpringMVCUtil;
- import cn.dev33.satoken.stp.StpLogic;
- import cn.dev33.satoken.stp.StpUtil;
- import cn.dev33.satoken.util.SaResult;
- import cn.hutool.core.util.IdUtil;
- import com.xjrsoft.common.annotation.XjrLog;
- import com.xjrsoft.common.constant.GlobalConstant;
- import com.xjrsoft.common.utils.RedisUtil;
- import com.xjrsoft.config.CommonPropertiesConfig;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.servlet.ModelAndView;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * Oauth2
- */
- @Api(tags = "Oauth2")
- @RestController
- @AllArgsConstructor
- public class Oauth2Controller {
- @Autowired
- private CommonPropertiesConfig commonPropertiesConfig;
- private final RedisUtil redisUtil;
- // 处理所有OAuth相关请求
- @RequestMapping("/oauth2/*")
- @ApiOperation(value = "oauth2", notes = "处理所有OAuth相关请求")
- @XjrLog(value = "处理所有OAuth相关请求")
- public Object request() {
- return SaOAuth2Handle.serverRequest();
- }
- // Sa-OAuth2 定制化配置
- @Autowired
- public void setSaOAuth2Config(SaOAuth2Config cfg) {
- // 配置:未登录时返回的View
- cfg.setNotLoginView(() -> {
- SaRequest req = SaHolder.getRequest();
- Map<String, String> paramMap = req.getParamMap();
- StringBuilder param = new StringBuilder();
- paramMap.forEach((k, v) -> {
- param.append("&").append(k).append("=").append(v);
- });
- param.deleteCharAt(0);
- String callBackUrl = String.format("%s?%s", commonPropertiesConfig.getDomainApi(), param);
- String key = GlobalConstant.OAUTH2 + IdUtil.simpleUUID();
- redisUtil.set(key, callBackUrl, 86400);
- SaResponse res = SaHolder.getResponse();
- SaCookie cookie = new SaCookie()
- .setName("Oauth2Info")
- .setValue(key);
- res.addCookie(cookie);
- res.redirect(String.format("%s/#/login", commonPropertiesConfig.getDomainWeb()));
- return null;
- }).
- // 配置:登录处理函数
- setDoLoginHandle((name, pwd) -> {
- if ("sa".equals(name) && "123456".equals(pwd)) {
- StpUtil.login(10001);
- return SaResult.ok();
- }
- return SaResult.error("账号名或密码错误");
- }).
- // 配置:确认授权时返回的View
- setConfirmView((clientId, scope) -> {
- Map<String, Object> map = new HashMap<>();
- map.put("clientId", clientId);
- map.put("scope", scope);
- return new ModelAndView("confirm.html", map);
- });
- }
- }
|