后台系统免密跳转至Nacos控制台页面

后台系统免密跳转至Nacos控制台页面

  • 1 项目场景及现状
  • 2 需求问题
  • 3 解决过程
  • 5 逻辑调用过程
  • 4 nacos登录api地址及调用示例
    • 4.1 nacos登录api地址
    • 4.2 代码调用示例


1 项目场景及现状

1、项目本身有后台管理页面
2、项目集成了nacos作为服务发现与配置中心
3、因后台管理和nacos是独立的服务和用户体系,需分别访问对应的服务地址并输入用户名密码才可进入相应的系统页面。

2 需求问题

直接从后台管理页面跳转至nacos控制台页面,所有后台管理用户可免密进入nacos控制台。

3 解决过程

发现:
1、nacos登录后会在local storage存放登录的token信息
2、local storage中的token信息是nacos登录API成功后会返回
思考:
只要在跳转到nacos控制台之前把用户登录后的token信息存放在local storage中,就可完成前台的免密登录了。

5 逻辑调用过程

后台管理系统前端 后端 nacos 点击跳转nacos页面按钮 调用后台登录nacos接口 调用nacos登录api,传入用户名、密码 登录成功,生产token信息 返回token信息 返回token信息 将token信息存储到local storage 跳转至nacos控制台页面 后台管理系统前端 后端 nacos

注意:后台管理系统和nacos需要在同一个域下才可

4 nacos登录api地址及调用示例

4.1 nacos登录api地址

http://ip:port/nacos/v1/auth/users/login
postman调用示例:
后台系统免密跳转至Nacos控制台页面_第1张图片

4.2 代码调用示例

import com.springbootplus.common.api.ApiResult;
import com.springbootplus.nacos.domain.repository.NacosRepository;
import com.springbootplus.util.OkHttpRequestUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * nacos服务 仓储层
 * 
* * @author yjj * @since 2021/11/24 */
@Slf4j @Repository public class NacosRepositoryImpl implements NacosRepository { @Value("${nacos.login.url:http://127.0.0.1:8848/nacos/v1/auth/users/login}") private String loginUrl; @Value("${nacos.login.user-name:nacos}") private String nacosLoginName; @Value("${nacos.login.user-pass:nacos}") private String nacosLoginPasswd; @Override public String login() { Map<String, Object> headMap = new HashMap<>(1); // 注意这里是form-data类型 headMap.put("Content-Type", "multipart/form-data"); Map<String, Object> paramMap = new HashMap<>(2); paramMap.put("username", nacosLoginName); paramMap.put("password", nacosLoginPasswd); try { return OkHttpRequestUtils.doPost(loginUrl, headMap, paramMap); } catch (Exception e) { log.error("调用nacos登录失败", e); return "跳转nacos控制台失败,请稍候重试"; } } }

你可能感兴趣的:(spring,boot)