前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud Alibaba之服务发现组件 - Nacos自定义登录用户名和密码(九)

Spring Cloud Alibaba之服务发现组件 - Nacos自定义登录用户名和密码(九)

作者头像
用户1212940
发布2022-04-13 16:56:46
1.3K0
发布2022-04-13 16:56:46
举报
文章被收录于专栏:LambdaLambda

上一章已经介绍了如何使用MySQL完成Nacos的数据存储替换,既然我们有了自己的数据库表,那么我们就可以通过修改用户表(users)来完成自定义登录用户名和密码的功能。

自定义登录用户名和密码

前提:我们已经设置了Nacos的数据存储为MySQL,且创建了Nacos数据库。详细配置参考Nacos的数据持久化(七)

第一步:确保之前初始化的数据库中有下面用户表users、角色表roles:

11464886-bab6830dc30a569a.png
11464886-bab6830dc30a569a.png

其中:

  • users表存储的是用户名、密码、启用标记
  • roles表存储的是用户角色

默认情况下系统会自带一条用户数据,用户名和密码都是:nacos,密码使用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder.BCryptPasswordEncoder() 加密生成。 依赖包:

代码语言:javascript
复制
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
</dependency>

第二步:下载nacos源码,找到console子模块:

11464886-c18a85c32ae94776.png
11464886-c18a85c32ae94776.png

第三步: 使用nacos提供的加密工具类可以实现密码的加密操作

代码语言:javascript
复制
package com.alibaba.nacos.console.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * Password encoder tool
 *
 * @author nacos
 */
public class PasswordEncoderUtil {

    public static void main(String[] args) {
        System.out.println(new BCryptPasswordEncoder().encode("admin"));
    }
}

例如上面我设置密码是admin,加密后是:

代码语言:javascript
复制
$2a$10$dqlzFzaTFo4PhgJAfk/IfuU6LMZeMbkTCn1SGnZ018KVeYD7xF0sm

只需将密码在数据库中进行修改即可。

代码语言:javascript
复制
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$dqlzFzaTFo4PhgJAfk/IfuU6LMZeMbkTCn1SGnZ018KVeYD7xF0sm', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');

或者直接在数据库中分别修改users表和roles表:

11464886-0f5bf9579fc1f8e1.png
11464886-0f5bf9579fc1f8e1.png
11464886-cf58b5489c05a48a.png
11464886-cf58b5489c05a48a.png

第四步:修改完数据库后,用自定义 admin 用户名和密码直接登录:

11464886-12feba3c8a338add.png
11464886-12feba3c8a338add.png

思考

我们通过查看源码发现,Nacos通过Spring Security完成密码认证操作,这里只是简单的处理。后面我们也可以基于用户表和角色表完成更加复杂的操作。有兴趣的同学可以研究Nacos的源码。

接下来章节,我们将讲解如何使用Nacos搭建集群环境部署。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义登录用户名和密码
  • 思考
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档