Spring Security(1)

2022/11/22 4:24:57

本文主要是介绍Spring Security(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~


虽然说互联网是一个非常开发几乎没有边界的信息大海但说起来有点奇怪的是每个稍微有点规模的互联网应用都有自己的权限系统而权限的本质却是是封闭的——开放的互联网有着封闭的权限

现在做Java后端应用开发用的都是Spring框架但在Spring诞生之前却是Servlet的天下都是根据业务规则各自实现自己的Servlet权限系统也是一样在没有统一的权限系统规范之前各个Java业务系统都是根据需求自己实现对功能的授权管理这种早期的权限系统称之为ACLAccess Control List访问控制列表)。等发展到一定程度工程师们发现给用户一个个地授权能访问哪个功能或不能访问哪个功能实在是太麻烦了于是就出现了RBACRole-Based Access Control基于角色的访问控制)。并由此出现了一系列的演变之后又出现了ABACAttribute-Based Access Control基于属性的访问控制CBAC(Claims-Based Access Control,基于声明的访问控制)。其中ABAC又称为PBAC(Policy-Based Access Control,基于策略的访问控制)。

这一系列的名称让人有点乱不过目前在一般规模的应用中还是以RBAC为主至于像什么BAT这种级别的互联网应用早就超出了这种权限的范畴了

早期的RBAC作为一个相对独立的开发内容工作量其实还是比较大的而且必须考虑到一些动态的变化所以安全性稳定性都没办法得到100%的保证于是Spring Security出现了它是一个依托于Spring的RBAC权限管理框架,在Spring Boot之前,Shiro用的更多,因为Spring Security相对来说配置比较繁琐,属于重量级的权限管理框架。所以SpringMVC + Shiro的组合更常见。Spring Boot出现之后Spring Security提供了更友好的配置方案。

Spring Security的核心功能主要包括

1、认证(是谁-Who)

2、授权(能干什么-What)

3、防伪(身份伪造)

Spring Security的核心就是一组FilterChain过滤器组成的过滤器链,逐步实现所有需要权限介入的管理工作

这里就从登录开始完成一个前后端分离的微型应用以接口测试工具代替前端调用

先在idea上创建一个新的Spring Initializer项目

https://img4.sycdn.imooc.com/637a3fd400011e6a09220490.jpg

 

然后再创建数据库表

-- ------------------------------ Table structure for sys_user-- ----------------------------DROP TABLE IF EXISTS sys_user;CREATE TABLE sys_user (
  id int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编码',
  username varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
  password varchar(255) NOT NULL DEFAULT '' COMMENT '密码',
  createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  updatetime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',  PRIMARY KEY (id) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表';-- ------------------------------ Table structure for sys_role-- ----------------------------DROP TABLE IF EXISTS sys_role;CREATE TABLE sys_role (
  id int(11) NOT NULL AUTO_INCREMENT COMMENT '角色编码',
  name varchar(255) NOT NULL COMMENT '角色名称 ',
  createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  updatetime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',  PRIMARY KEY (id) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='角色表';-- ------------------------------ Table structure for sys_user_role-- ----------------------------DROP TABLE IF EXISTS sys_user_role;CREATE TABLE sys_user_role (
  userid int(11) NOT NULL COMMENT '用户编码',
  roleid int(11) NOT NULL COMMENT '角色编码',
  createtime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  updatetime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',  PRIMARY KEY (userid,roleid) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户角色表';


 

初始化数据

INSERT INTO sys_user VALUES (1, 'admin', '123456', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_user VALUES (2, 'manager', '123456', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_user VALUES (3, 'employee', '123456', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_role VALUES (1, 'ROLE_ADMIN', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_role VALUES (2, 'ROLE_MANAGER', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_role VALUES (3, 'ROLE_EMPLOYEE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_user_role VALUES (1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_user_role VALUES (2, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);INSERT INTO sys_user_role VALUES (3, 3, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

 

修改pom文件

https://img1.sycdn.imooc.com/637a400e0001a1dc07180287.jpg


https://img1.sycdn.imooc.com/637a40130001099305140280.jpg


https://img1.sycdn.imooc.com/637a40170001ee7505930393.jpg



配置application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://172.16.185.129:3306/vmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456


 

感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~





这篇关于Spring Security(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程