注:在使用springsecurity之前我们用普通的登录方式

- _1 v2 C4 a8 h, m8 h6 q2 q+ l: [1、前端发来登录请求会带上username,password: M) f7 B5 T( W9 p' p+ a

2、后端根据username去数据库查询用户,查不到表示用户不存在,查到了再拿password去和数据库进行比对

5 \7 E* d- m& E( ?  3、如果比对一样把它存入session,后续实行任何操作都先从session中先判断user存不存在

+ k1 D7 M, G* k8 k* k# {% F2 g$ ?3 E其实一直以来我对用户登录的理解就是这么简单,然后我发现有很多地方的登录都五花八门,方式多了,自己也就会变得

U% G5 y2 s8 V1 \有点糊涂,所以我在这里就使用博客形式来理清一下思路,如果用springsecurity的话这些步骤其实框架都给我们做了,这也是这篇博客的意义所在...

: A; V4 t, y- C4 ?+ g, o- @$ S下面就使用springsecurity来进行登录,有人会问为什么不用shiro来实现,其实springsecurity这个技术也存在很多年了,并不是一个# {1 H! k) o: W5 f0 E0 o

# D1 X7 ]6 r& S! Q& e0 O

新技术了,如果使用SSM框架确实配合shiro会香一点,但是在springboot中使用springsecurity会更方便,因为很多事情boot都帮我们做了

" r6 ~2 ]% Z1 p3 L9 ]1 g$ z0 j下面就来和我一起coding吧....

8 j* |0 x. K, k$ S0 g2 \一、创建hr(user)表、role(角色)表、hr_role(用户角色关联表)

" m" F$ M0 @* ]4 S+ V

1 CREATE TABLE `hr` ( 2   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'hrID', 3   `name` varchar(32) DEFAULT NULL COMMENT '姓名', 4   `phone` char(11) DEFAULT NULL COMMENT '手机号码', 5   `telephone` varchar(16) DEFAULT NULL COMMENT '住宅电话', 6   `address` varchar(64) DEFAULT NULL COMMENT '联系地址', 7   `enabled` tinyint(1) DEFAULT '1', 8   `username` varchar(255) DEFAULT NULL COMMENT '用户名', 9   `password` varchar(255) DEFAULT NULL COMMENT '密码',10   `userface` varchar(255) DEFAULT NULL,11   `remark` varchar(255) DEFAULT NULL,12   PRIMARY KEY (`id`)13 ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8复制代码1 CREATE TABLE `role` (2   `id` INT(11) NOT NULL AUTO_INCREMENT,3   `name` VARCHAR(64) DEFAULT NULL,4   `nameZh` VARCHAR(64) DEFAULT NULL COMMENT '角色名称',5   PRIMARY KEY (`id`)6 ) ENGINE=INNODB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8复制代码1 CREATE TABLE `hr_role` ( 2   `id` INT(11) NOT NULL AUTO_INCREMENT, 3   `hrid` INT(11) DEFAULT NULL, 4   `rid` INT(11) DEFAULT NULL, 5   PRIMARY KEY (`id`), 6   KEY `rid` (`rid`), 7   KEY `hr_role_ibfk_1` (`hrid`), 8   CONSTRAINT `hr_role_ibfk_1` FOREIGN KEY (`hrid`) REFERENCES `hr` (`id`) ON DELETE CASCADE, 9   CONSTRAINT `hr_role_ibfk_2` FOREIGN KEY (`rid`) REFERENCES `role` (`id`)10 ) ENGINE=INNODB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8复制代码二、先不急做其他的,可以先测试一下,下面我随便写了个controller【创建springboot工程时记得加上springsecurity依赖】

) P% c7 X6 ]. `1 package org.yybb.securitylogin.controller; 2  3 import org.springframework.web.bind.annotation.GetMapping; 4 import org.springframework.web.bind.annotation.RestController; 5  6 /** 7  * @Author: Ben 8  * @CreateTime: 2020-03-12 06:00 9  */10 @RestController11 public class HelloController {12     @GetMapping("/hello")13     public String hello() {14         return "hello ";15     }16 }复制代码三、访问hello

% o. {( z/ W. x: i, L* @, p6 {& s/ j- f% C" T

9 n& H4 [( O9 R$ _2 @. n! S1 _% ?

他会自动跳转到springsecurity的登录页,然后我们就行登录,默认用户名是user密码会在控制台随机打印出来的,然后登录过后就能访问了* ~: _" k5 Y8 i. ~* g5 Y# S/ f2 P

; s& b) G- L$ p4 E' w $ x0 W% H+ n! l; Z1 s( i& m

只要引入security依赖就会把所以接口保护起来,下面我们连接上数据库使用

- z( V2 h6 A, E四、创建实体类

5 `' ]# B: o# {, M/ N

- R' T: }6 j+ b8 m2 @3 b注意:使用springsecurity用户类必须实现UserDetail1 \3 q- O" o$ }6 r' g

( y$ V0 `2 J( K5 P% k

[code]  1 package org.yybb.securitylogin.model;  2   3 import org.springframework.security.core.GrantedAuthority;  4 import org.springframework.security.core.userdetails.UserDetails;  5   6 import java.util.Collection;  7 import java.util.List;  8   9 /** 10  * @Author: Ben 11  * @CreateTime: 2020-03-07 12:08 12  */ 13 public class Hr implements UserDetails { 14     private Integer id; 15  16     private String name; 17  18     private String phone; 19  20     private String telephone; 21  22     private String address; 23  24     private Boolean enabled; 25  26     private String username; 27  28     private String password; 29  30     private String userface; 31  32     private String remark; 33  34     private Listroles; 35  36     public List getRoles() { 37         return roles; 38     } 39  40     public void setRoles(List roles) { 41         this.roles = roles; 42     } 43  44     public Integer getId() { 45         return id; 46     } 47  48     public void setId(Integer id) { 49         this.id = id; 50     } 51  52     public String getName() { 53         return name; 54     } 55  56     public void setName(String name) { 57         this.name = name; 58     } 59  60     public String getPhone() { 61         return phone; 62     } 63  64     public void setPhone(String phone) { 65         this.phone = phone; 66     } 67  68     public String getTelephone() { 69         return telephone; 70     } 71  72     public void setTelephone(String telephone) { 73         this.telephone = telephone; 74     } 75  76     public String getAddress() { 77         return address; 78     } 79  80     public void setAddress(String address) { 81         this.address = address; 82     } 83  84   /* 底下返回,不删除就会有两个 85    public Boolean getEnabled() { 86         return enabled; 87     }*/ 88  89     public void setEnabled(Boolean enabled) { 90         this.enabled = enabled; 91     } 92  93     public String getUsername() { 94         return username; 95     } 96  97     /** 98      * 账号是否过期、未过期 99      *100      * @return true101      */102     @Override103     public boolean isAccountNonExpired() {104         return true;105     }106 107     /**108      * 账号是否被锁定、未锁定109      *110      * @return true111      */112     @Override113     public boolean isAccountNonLocked() {114         return true;115     }116 117     /**118      * 密码是否过期、未过期119      *120      * @return true121      */122     @Override123     public boolean isCredentialsNonExpired() {124         return true;125     }126 127     @Override128     public boolean isEnabled() {129         return enabled;130     }131 132     public void setUsername(String username) {133         this.username = username;134     }135 136     /**137      * 返回用户角色138      * @return139      */140     @Override141     public Collection

用户登录色一句java_SpringBoot中用SpringSecurity实现用户登录并返回其拥有哪些角色...相关推荐

  1. 用户登录色一句java_用户权限及角色

    每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表.视图和其他资源.Oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型).用户可以 ...

  2. 厉害,我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证

    小二是新来的实习生,作为技术 leader,我还是很负责任的,有什么锅都想甩给他,啊,不,一不小心怎么把心里话全说出来了呢?重来! 小二是新来的实习生,作为技术 leader,我还是很负责任的,有什么 ...

  3. Spring源码分析【8】-分布式环境SpringSecurity保持用户会话

    1.SpringSecurity的权限控制流程是这样的: 用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里. 下面是contextHolder对象: fin ...

  4. linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...

    LINUX中用命令成功建立一个用户后信息会记录在哪个文件中 发布时间:2007-07-28 10:14:57来源:红联作者:MPiops 增加用户帐号后 新建用户的命令十分简单,在命令行下使用 use ...

  5. db2关闭下一句sql的日志_MySQL 用户和权限管理,日志体系简介

    一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个root用户,作为数据库管理员,拥有所有权限.在多用户的应用场景 ...

  6. springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)

    本文使用springboot+mybatis+SpringSecurity 实现用户权限数据库管理 实现用户和角色用数据库存储,而资源(url)和权限的对应采用硬编码配置. 也就是角色可以访问的权限通 ...

  7. Springsecurity搭建自定义登录页面

    Springsecurity搭建自定义登录页面 1.springSecurity的搭建 新建一个springboot的web项目,我这边只选中了web,建立后如下: image.png pom依赖: ...

  8. SpringBoot集成SpringSecurity(二) 个性化登录配置(remember-me mongodb)

    前言 本文件所记录的是使用SpringSecurity实现remember me功能,有兴趣的朋友可以继续阅读,有何不足之处还请各位指出(本文未对用户 -  角色 - 权限三者的关系进行详细介绍详情见 ...

  9. SpringBoot+SpringSecurity处理Ajax登录请求

    最近在项目中遇到了这样一个问题:前后端分离,前端用Vue来做,所有的数据请求都使用vue-resource,没有使用表单,因此数据交互都是使用JSON,后台使用Spring Boot,权限验证使用了S ...

最新文章

  1. 论CondConv、DynamicConv、DyNet的区别与联系
  2. Tomcat下使用war包发布项目
  3. java md5 密钥_java加密算法--MD5加密和哈希散列带秘钥加密算法源码
  4. 算法 判断多个点是否在同一圆周线上_凸包问题——礼物包裹算法
  5. RUNOOB python练习题19 找出1000以内的所有完数
  6. java sql objects_第十五章-简书.sql
  7. 什么是掼蛋游戏呼叫中心
  8. iOS开发 适配iOS10以及Xcode8-b
  9. 在Linux SSH全称,linux – 按名称获取打开的ssh连接列表
  10. linux uuid挂载磁盘_Linux磁盘设备磁盘设备的UUID标识代码(sda,sdb,sdc…)变化的解决办法...
  11. windows-更新包
  12. java中类图概念_UML类图详细介绍
  13. 【Java】soap协议发送webservice请求工具类
  14. android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
  15. 程序员这高薪岗位只有计算机专业的能做?
  16. 仿真软件proteus构建LCD1602四线驱动实验
  17. IDEA中输入法无法切换成中文解决方法
  18. 普罗米修斯Prometheus手记
  19. 计算机专业一句话介绍自己,来聊聊,你会如何用一句话介绍自己的专业?
  20. 杭州拱墅区委副书记、区长冯晶一行莅临利尔达参观调研

热门文章

  1. Orace用户创建及权限分配
  2. 开发人员kpi怎么写_为什么开发人员应该知道怎么写
  3. ES6技巧和窍门,使您的代码更简洁,更短且更易于阅读!
  4. mysql服务启动失败 Starting MySQL. ERROR! The server quit without updating PID file
  5. 用Python玩连连看是什么效果?
  6. 学以致用,Python定时采集微博评论
  7. ollections 模块之OrderedDict
  8. ubuntu 16.0.4如何配合网卡,
  9. Mybatis入门(一)
  10. django的悲观锁