
- Spring Security——入门程序(一)
- 一、spring security 简介
- 二、入门程序
- 1.导入依赖
- 2.创建数据库
- 3.准备页面
- 4.配置application.yml
- 5.创建实体类,mapper,service和controller
- 实体类
- mapper
- Service
- controller
- 6.配置Spring Security
- UserDetailsService
- WebSecurityConfig
- 7.测试
- 三、final类httpSecurity
Spring Security——入门程序(一) 一、spring security 简介源码地址:https://gitee.com/huanglei1111/spring-security/tree/master/hl01-spring-security
spring security 的核心功能主要包括:
- 认证 (你是谁)
- 授权 (你能干什么)
- 攻击防护 (防止伪造身份)
其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。
注意:绿色的过滤器可以配置是否生效,其他的都不能控制。
比如,对于username password认证过滤器来说,
- 会检查是否是一个登录请求;
- 是否包含username 和 password (也就是该过滤器需要的一些认证信息) ;
- 如果不满足则放行给下一个。
下一个按照自身职责判定是否是自身需要的信息,basic的特征就是在请求头中有 Authorization:Basic eHh4Onh4 的信息。中间可能还有更多的认证过滤器。最后一环是 FilterSecurityInterceptor,这里会判定该请求是否能进行访问rest服务,判断的依据是 BrowserSecurityConfig中的配置,如果被拒绝了就会抛出不同的异常(根据具体的原因)。Exception Translation Filter 会捕获抛出的错误,然后根据不同的认证方式进行信息的返回提示。
二、入门程序 1.导入依赖2.创建数据库org.springframework.boot spring-boot-starter-securityorg.mybatis.spring.boot mybatis-spring-boot-starter1.3.1 mysql mysql-connector-java5.1.47 org.springframework.boot spring-boot-starter-thymeleaforg.springframework.boot spring-boot-starter-web
一般权限控制有三层,即:用户<–>角色<–>权限,用户与角色是多对多,角色和权限也是多对多。这里我们先暂时不考虑权限,只考虑用户<–>角色。
创建用户表sys_user:
CREATE TABLE `sys_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建权限表sys_role:
CREATE TABLE `sys_role` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建用户-角色表sys_user_role:
CREATE TABLE `sys_user_role` ( `user_id` int(11) NOT NULL, `role_id` int(11) NOT NULL, PRIMARY KEY (`user_id`,`role_id`), KEY `fk_role_id` (`role_id`), CONSTRAINT `fk_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETe CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
初始化一下数据:
INSERT INTO `sys_role` VALUES ('1', 'ROLE_ADMIN');
INSERT INTO `sys_role` VALUES ('2', 'ROLE_USER');
INSERT INTO `sys_user` VALUES ('1', 'admin', '123');
INSERT INTO `sys_user` VALUES ('2', 'jitwxs', '123');
INSERT INTO `sys_user_role` VALUES ('1', '1');
INSERT INTO `sys_user_role` VALUES ('2', '2');
3.准备页面这里的权限格式为ROLE_XXX,是Spring Security规定的,不要乱起名字哦。
用于登陆的login.html以及用于登陆成功后的home.html,将其放置在 resources/templates 目录下:
(1)login.html
登陆
登陆
微信扫一扫
支付宝扫一扫
评论列表(0条)