实现数据库用户校验

news2024/11/24 4:45:49

导入my-batis-plus依赖:

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

在dto下创建Acoount类,用于保存账户信息:

@Data
@TableName("db-account")
@AllArgsConstructor
public class Account {
    @TableId(type = IdType.AUTO)
    Integer id;
    String username;
    String password;
    String email;
    String role;
    Date registerTime;
}

在sql中创建对应的表,包含以上的属性,将id设为自动增加。

在mapper包下创建AccountMapper类:

@Mapper
public interface AccountMapper extends BaseMapper<Account> {

}

在service包下创建AccountService接口:

public interface AccountService extends IService<Account> , UserDetailsService {
    Account findAccountByNameOrEmail(String text);
}

创建AccountServiceImpl代理:

@Service
public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements AccountService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        Account account=this.findAccountByNameOrEmail(username);
        if (account==null){
            throw new UsernameNotFoundException("用户名或密码错误");
        }
        return User.withUsername(username)
                .password(account.getPassword())
                .roles(account.getRole())
                .build();
    }

    public Account findAccountByNameOrEmail(String text){
return this.query()
        .eq("username",text).or()
        .eq("email",text)
        .one();
    }

}

配置数据库连接:

  datasource:
    username: root  
    password: yyt320581
    url: jdbc:mysql://localhost:3306/vue-database
    driver-class-name: com.mysql.cj.jdbc.Driver 

在yaml配置文件中:后有空格

由于我建立的表名为db-account,导致发生语法错误,最后mybatis给出的语句中只有-account,请使用_进行数据库命名

尝试进行登陆,将用户名密码改成数据库中设置好的内容。

由于将加密密码存入数据库中,所以还要设置加密器

@Test
    void contextLoads() {
        System.out.println(new BCryptPasswordEncoder().encode("123456"));
    }

新建WebConfiguration中设置加密器:

```Plain Text @Configuration public class WebConfiguration { @Bean BCryptPasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } }


![](/tmp/651147134636430E00ED2A34/media/实现数据库用户校验+aed364a0-42e9-4a27-b49a-3b2e90ddee4c/image 1.png)

此时与数据库中的账号信息比对后成功登陆

由于redis安装在wsl2中,运行时报错Unable to connect to Redis

首先打开wsl2,输入命令redis-server运行redis,运行命令ip addr show eth0 | grep -oP '(?<=inet\s)\d+(.\d+){3}'

查看运行的wsl2实例的ip地址,查看redis运行的默认端口号为6379,在idea中配置redis。

在这之前需要为redis配置文件,请查看redis数据库页面来进行相应配置。

问题已解决,通过安装非官方windows版redis能够正常运行

登陆后返回的用户信息仍然为测试时硬编码的内容,注入accountserviec并修改处理方法:

```Plain Text
@Resource
    AccountService service;

public void onAuthenticationSuccess(HttpServletRequest request,
                                        HttpServletResponse response,
                                        Authentication authentication) throws IOException, ServletException {

        response.setContentType("application/json;charset=utf-8");


        User user=(User)authentication.getPrincipal();
        AuthorizeVO vo =new AuthorizeVO();
        Account account=service.findAccountByNameOrEmail(user.getUsername());
        String token =utils.createJwt(user,account.getId(),account.getUsername());

        vo.setExpire(utils.expireTime());
        vo.setRole(account.getRole());
        vo.setToken(account.getRole());
        vo.setUsername(account.getUsername());

        response.getWriter().write(RestBean.success(vo).asJsonString());
        System.out.println(RestBean.success(token).asJsonString());
    }

此时返回的用户信息正确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图论C++】链式前先星(图(树)的存储)

/*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff1a;转载需获得博主本人…

Flink--6、输出算子(连接到外部系统、文件、kafka、MySQL、自定义Sink)

星光下的赶路人star的个人主页 世间真正温煦的春色&#xff0c;都熨帖着大地&#xff0c;潜伏在深谷 文章目录 1、输出算子&#xff08;Sink&#xff09;1.1 连接到外部系统1.2 输出到文件1.3 输出到Kafka1.4 输出到MySQL&#xff08;JDBC&#xff09;1.4 自定义Sink输出 1、输…

Unity插件Xcharts3.x版本使用笔记

Unity插件Xcharts3.x版本使用笔记 官方下载链接&#xff1a;https://xcharts-team.github.io/导入Unity基本使用方式&#xff08;折线图动态添加数据&#xff09;如果想要更多的表现效果可以看官方自带的脚本&#xff0c;这里包括了官方展示案例的部分效果&#xff0c;不过没有…

Windows10操作系统部署AD

windows 10 安装配置AD 一、启用AD 1.打开控制面板—>程序—>启用或关闭windows功能 2.勾选Active Directory Lightweight Directory Services&#xff08;Active Directory 轻型目录服务&#xff09; 注&#xff1a;不同版本中英文显示有区别&#xff0c;认准AD字样就…

Learn Prompt- Midjourney案例:动漫设计

使用 Midjourney 生成动漫有两种方法&#xff1a;使用Niji模式或使用标准的 Midjourney 模型。Niji V5 是 Midjourney 的动漫专用模型。它建立在标准 Midjourney 模型的全新架构之上&#xff0c;更擅长生成命名的动漫角色。Niji V4于2023年12月发布&#xff0c;Niji V5于2023年…

uniapp中使用axios打包到小程序时报 TypeError: adapter is not a function

出现这个错误的原因是因为小程序支持的是它自己原生封装的request接口&#xff0c;它底层用的http的。 若需要使用axios的话&#xff0c;我们需要使用一个axios适配器来兼容小程序。 下面用到axios-miniprogram-adapter适配器来解决 gitHub地址&#xff1a;GitHub - bigmeow…

智能中充满了符号、逻辑、力的想象和诱惑

把智能仅仅视为物化的理性特征符号的观点忽略了智能的社会性和交互性。智能不仅仅是个体内部的智能表现&#xff0c;还包括人与人之间的互动和人机环境系统的影响。智能是人类与其环境相互作用的结果&#xff0c;受到社会文化、教育、经验等因素的影响&#xff0c;具有社会意义…

域名备案流程(个人备案,腾讯云 / 阿里云)

文章目录 1.网站备案的目的2.备案准备的材料2.1 网站域名2.2 云资源或备案授权码2.3 电子材料 3.首次个人备案准备的材料3.1 主体相关3.2 域名相关3.3 网站相关3.4 网站服务相关3.5 变更相关 4.个人备案流程4.1 登录系统4.2 填写备案信息&#x1f340; 填写备案省份&#x1f34…

sql防止连表查询后出现空行数据

sql防止连表查询后出现空行数据 防止连表查询后出现空行数据 1.在where后加&#xff1a;and t2.pk_id is not null 或者2.在返回值list上处理 List TaskItem intelligentCloudMapper.getTaskItem(params.getPkId()); TaskItem.removeAll(Collections.singleton(null)); <se…

IO流————

一、字符流 前面我们学习了字节流,使用字节流可以读取文件中的字节数据。但是如果文件中有中文,使用字节流来读取,就有可能读到半个汉字的情况,这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码,但是如果文件过大又不太合适。 所以Java专门为我们提供了另外一种…

Opengl之颜色

现实世界中有无数种颜色&#xff0c;每一个物体都有它们自己的颜色。我们需要使用&#xff08;有限的&#xff09;数值来模拟真实世界中&#xff08;无限&#xff09;的颜色&#xff0c;所以并不是所有现实世界中的颜色都可以用数值来表示的。然而我们仍能通过数值来表现出非常…

js实现动态数字滚动,插件jquery.counterup.min.js的使用方式

推荐一个常用的数字滚动动画插件&#xff0c;jquery.counterup.js 该插件可以控制动画的延迟时间和动画过渡时间。但它依赖于Waypoints.js插件来监听滚动事件。 从而实现页面滚动到数字可视窗口&#xff0c;实现让数字从零到指定数值的滚动。 使用方式 首先引入jQuery.js 引入…

解决Excel无法打开文件“xxx.xlsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式!匹配的问题

文章目录 1. 复现错误2. 分析错误3. 解决错误 1. 复现错误 今天在开发过程中&#xff0c;测试指给我一个bug&#xff0c;如下图所示&#xff1a; 于是&#xff0c;我拿到这个文件标准模板.xlsx&#xff0c;尝试使用WPS打开看看&#xff0c;如下图所示&#xff1a; 如上图所示&a…

九日集训 Leetcode 371.两整数之和

给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - &#xff0c;计算并返回两整数之和。 示例 1&#xff1a; 输入&#xff1a;a 1, b 2 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;a 2, b 3 输出&#xff1a;5提示&#xff1a; -1000 < a, b < 10…

树莓派上使用kettle将文本文档导入mariadb

目录 1 连接MariaDB的前置条件 2 test.txt 3 在mariadb中创建数据库和数据表 4 在kettle中的操作 4.1 新建任务 4.2 连接数据库 4.3 文本文件输入 4.4 表输出 4.5 运行 4.6 结果 1 连接MariaDB的前置条件 首先你的mariaDB要有密码&#xff0c;我当前的用…

H3CNE

H3CNE 计算机网络概述 计算机网络定义 一组自治计算机互联的集合 计算机网络基本功能 资源共享 综合信息服务 分布式处理与负载均衡 计算机网络的类型 局域网 LAN 由用户自行建设&#xff0c;使用私有地址组建的内部网络 城域网 MAN 由运营商或大规模企业建设&am…

快速排序与冒泡排序以及代码

快速排序 快速排序&#xff08;Quicksort&#xff09;是一种常用的排序算法&#xff0c;它基于分治的思想。 时间复杂度&#xff1a;O&#xff08;nlogn&#xff09; 空间复杂度&#xff1a;O&#xff08;logn&#xff09; 快速排序的基本思想如下&#xff1a; 选择一个元素…

ffmpeg+flv视频推拉流实现(demo版)

前言 工作需要&#xff0c;记录一下前后端推拉流方案&#xff0c;基于HTTP-FLV协议&#xff0c;使用node flv.js ffmpeg进行前后端交互。 此方案为demo版&#xff0c;目的是打通前后端链路&#xff0c;项目应用正在研究中。 步骤 1.安装ffmpeg 后端推流需要借助ffmpeg流媒…

centos7 添加网卡设置动态ip,修改网卡为任意名称

centos7 添加网卡并设置动态ip&#xff0c;重命名为任意名称 本文记录如何在centos环境上增加两个网卡&#xff0c;并设置为动态获取ip&#xff0c;以及修改网卡名称为任意名称 1、centos7添加两个网卡动态获取ip 1.1 vmvare上添加网络适配器 1、关闭虚拟机 2、 添加网络适…

Linux:修改mvn命令使用的maven路径

要在 Linux 上更改 Maven 的版本&#xff0c;需要调整 PATH 环境变量以指向所需版本的 Maven 安装目录。 打开终端或命令行界面。 使用文本编辑器打开 /etc/profile 文件&#xff1a; vi /etc/profile在文件的末尾添加以下行&#xff0c;将 PATH 环境变量指向新的 Maven 安装目…