用户登录色一句java_SpringBoot中用SpringSecurity实现用户登录并返回其拥有哪些角色...
注:在使用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实现用户登录并返回其拥有哪些角色...相关推荐
- 用户登录色一句java_用户权限及角色
每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表.视图和其他资源.Oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型).用户可以 ...
- 厉害,我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证
小二是新来的实习生,作为技术 leader,我还是很负责任的,有什么锅都想甩给他,啊,不,一不小心怎么把心里话全说出来了呢?重来! 小二是新来的实习生,作为技术 leader,我还是很负责任的,有什么 ...
- Spring源码分析【8】-分布式环境SpringSecurity保持用户会话
1.SpringSecurity的权限控制流程是这样的: 用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里. 下面是contextHolder对象: fin ...
- linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...
LINUX中用命令成功建立一个用户后信息会记录在哪个文件中 发布时间:2007-07-28 10:14:57来源:红联作者:MPiops 增加用户帐号后 新建用户的命令十分简单,在命令行下使用 use ...
- db2关闭下一句sql的日志_MySQL 用户和权限管理,日志体系简介
一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个root用户,作为数据库管理员,拥有所有权限.在多用户的应用场景 ...
- springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)
本文使用springboot+mybatis+SpringSecurity 实现用户权限数据库管理 实现用户和角色用数据库存储,而资源(url)和权限的对应采用硬编码配置. 也就是角色可以访问的权限通 ...
- Springsecurity搭建自定义登录页面
Springsecurity搭建自定义登录页面 1.springSecurity的搭建 新建一个springboot的web项目,我这边只选中了web,建立后如下: image.png pom依赖: ...
- SpringBoot集成SpringSecurity(二) 个性化登录配置(remember-me mongodb)
前言 本文件所记录的是使用SpringSecurity实现remember me功能,有兴趣的朋友可以继续阅读,有何不足之处还请各位指出(本文未对用户 - 角色 - 权限三者的关系进行详细介绍详情见 ...
- SpringBoot+SpringSecurity处理Ajax登录请求
最近在项目中遇到了这样一个问题:前后端分离,前端用Vue来做,所有的数据请求都使用vue-resource,没有使用表单,因此数据交互都是使用JSON,后台使用Spring Boot,权限验证使用了S ...
最新文章
- 论CondConv、DynamicConv、DyNet的区别与联系
- Tomcat下使用war包发布项目
- java md5 密钥_java加密算法--MD5加密和哈希散列带秘钥加密算法源码
- 算法 判断多个点是否在同一圆周线上_凸包问题——礼物包裹算法
- RUNOOB python练习题19 找出1000以内的所有完数
- java sql objects_第十五章-简书.sql
- 什么是掼蛋游戏呼叫中心
- iOS开发 适配iOS10以及Xcode8-b
- 在Linux SSH全称,linux – 按名称获取打开的ssh连接列表
- linux uuid挂载磁盘_Linux磁盘设备磁盘设备的UUID标识代码(sda,sdb,sdc…)变化的解决办法...
- windows-更新包
- java中类图概念_UML类图详细介绍
- 【Java】soap协议发送webservice请求工具类
- android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
- 程序员这高薪岗位只有计算机专业的能做?
- 仿真软件proteus构建LCD1602四线驱动实验
- IDEA中输入法无法切换成中文解决方法
- 普罗米修斯Prometheus手记
- 计算机专业一句话介绍自己,来聊聊,你会如何用一句话介绍自己的专业?
- 杭州拱墅区委副书记、区长冯晶一行莅临利尔达参观调研