美文网首页
Spring Cloud Alibaba之服务发现组件 - Na

Spring Cloud Alibaba之服务发现组件 - Na

作者: 匆匆岁月 | 来源:发表于2019-07-11 17:40 被阅读0次

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

自定义登录用户名和密码

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

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


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

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

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
</dependency>

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

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

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,加密后是:

$2a$10$dqlzFzaTFo4PhgJAfk/IfuU6LMZeMbkTCn1SGnZ018KVeYD7xF0sm

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

INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$dqlzFzaTFo4PhgJAfk/IfuU6LMZeMbkTCn1SGnZ018KVeYD7xF0sm', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');

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


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

思考

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

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

相关文章

网友评论

      本文标题:Spring Cloud Alibaba之服务发现组件 - Na

      本文链接:https://www.haomeiwen.com/subject/wvgdkctx.html