首页 > 其他分享 >实现权限登录

实现权限登录

时间:2023-04-23 17:11:06浏览次数:26  
标签:COMMENT UserDetailsService NULL VARCHAR 登录 实现 用户 DEFAULT 权限

数据库校验用户

​ 从之前的分析我们可以知道,我们可以自定义一个UserDetailsService,让SpringSecurity使用我们的UserDetailsService。我们自己的UserDetailsService可以从数据库中查询用户名和密码

数据库

  CREATE TABLE `sys_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_name` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '用户名',
  `nick_name` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '昵称',
  `password` VARCHAR(64) NOT NULL DEFAULT 'NULL' COMMENT '密码',
  `status` CHAR(1) DEFAULT '0' COMMENT '账号状态(0正常 1停用)',
  `email` VARCHAR(64) DEFAULT NULL COMMENT '邮箱',
  `phonenumber` VARCHAR(32) DEFAULT NULL COMMENT '手机号',
  `sex` CHAR(1) DEFAULT NULL COMMENT '用户性别(0男,1女,2未知)',
  `avatar` VARCHAR(128) DEFAULT NULL COMMENT '头像',
  `user_type` CHAR(1) NOT NULL DEFAULT '1' COMMENT '用户类型(0管理员,1普通用户)',
  `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建人的用户id',
  `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
  `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新人',
  `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
  `del_flag` INT(11) DEFAULT '0' COMMENT '删除标志(0代表未删除,1代表已删除)',
  PRIMARY KEY (`id`)
  ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用户表'
引入MybatisPuls和mysql驱动的依赖

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.3</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
​ 配置数据库信息

  定义Mapper接口

 配置Mapper扫描

 ​ 添加junit依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>
测试Mapper是否能正常使用

 核心代码实现

创建一个类实现UserDetailsService接口,重写其中的方法。更加用户名从数据库中查询用户信息

因为UserDetailsService方法的返回值是UserDetails类型,所以需要定义一个类,实现该接口,把用户信息封装在其中

 注意:如果要测试,需要往用户表中写入用户数据,并且如果你想让用户的密码是明文存储,需要在密码前加{noop}。例如

 这样登陆的时候就可以用sg作为用户名,1234作为密码来登陆了

标签:COMMENT,UserDetailsService,NULL,VARCHAR,登录,实现,用户,DEFAULT,权限
From: https://www.cnblogs.com/NanFangDaGua/p/17347104.html

相关文章

  • 授权实现 封装权限信息
    限制访问资源所需权限​SpringSecurity为我们提供了基于注解的权限控制方案,这也是我们项目中主要采用的方式。我们可以使用注解去指定访问对应的资源所需的权限。​但是要使用它我们需要先开启相关配置我们前面在写UserDetailsServiceImpl的时候说过,在查询出用户后还要获取......
  • php实现网站生成桌面快捷方式
    PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可dianji.html代码:<ahref="a.php?url=www.hnzyxok.com&name=美日汇">生成左面快捷方式</a>shengcheng.php代码:<?php//网站生存左面快捷方式---功能$url=$_GET['url'];$filename=urldecode($_GET['n......
  • Golang实现代理TCP客户端
    目标网站xxx.com,代理服务器xxxproxy.com,通过代理服务器实现流量转发。packagemainfunchandle(srcnet.Conn){dst,err:=net.Dial("tcp","xxx.com:80")iferr!=nil{log.Fatalln("Unabletoconnectoutunreachablehost")}deferd......
  • Linux 环境,设置git账户密码,免登录
    1git配置个人用户信息#配置用户名gitconfig--globaluser.namewangjing#配置用户邮箱[email protected]#配置记住用户验证信息gitconfig--globalcredential.helperstore#查看相关配置信息gitconfig--lis  2保存账号2.1创建配......
  • 基于Canal实现MySQL 8.0 数据库数据同步
    前言服务器说明主机名称操作系统说明192.168.11.82Ubuntu22.04主库所在服务器192.168.11.28OracleLinuxServer8.7从库所在服务器版本说明MySQL版本:MySQL_8.0.32Canal版本:Canal_1.1.7//我的canal安装部署在192.168.11.82上,当然你也可以部......
  • App复杂动画实现——Rive保姆级教程
    作者:京东物流沈明亮在App开发过程中,如果想实现动画效果,可以粗略分为两种方式。一种是直接用代码编写,像平移、旋转等简单的动画效果,都可以这么干,如果稍微复杂点,就会对开发工程师的数学功底、图形图像学功底有很高的要求。另一种方式,可以让UI同学配合,一次性出多张图片或者直接出......
  • 时间序列预测相关技术的实现构建
    1.构建数据库2.掌握基于机器学习的基本方案3.搭建并使用机器学习的应用平台 1.构建数据库 时间序列专门的数据库InfluxDBhttps://docs.influxdata.com/influxdb/v2.7/时间序列数据平台,开发人员可以在该平台上构建物联网、分析和云应用程序。    ......
  • 自定义注解获取当前登录信息
    登录注解/***@authorzhourui*@date2023/4/189:39*/importjava.lang.annotation.*;/***@authorzhourui*@date2023/4/1714:42*/@Documented@Target(ElementType.METHOD)@Retention(value=RetentionPolicy.RUNTIME)public@interfaceReLogin{}......
  • el-button实现点击按钮更换背景色并自动回显原来的样式
    场景:点击按钮的会更改背景色会自动回显默认样式点击之前:点击之后自动又恢复点击前样式 实现:我用得是element-ui的el-button组件实现,代码如下在template中设置一个id<el-buttonclass="downloadBtn"id="resetFormBtn"@click="downloadBtn">报表下载</el-button> 在m......
  • HTML5实现文件上传下载功能实例解析
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......