目录

  • 1. 使用授权和认证的必要性
  • 2. spring security 与 shiro 与 过滤器,拦截器
  • 3. 具体配置使用

项目地址:
https://github.com/sevenyoungairye/spring-boot-study/tree/main/springboot-security-06

1. 使用授权和认证的必要性

  1. 什么是安全框架,干嘛的
    安全框架,是为了保护web应用,保护用户的隐私,哪些东西能给别人看,而哪些不能给别人看。给别人看,需要达到哪些条件,比如需要登录,会员等级(充钱)。
  2. 什么是spring security

spring security 是针对spring项目的安全框架,也是spring boot底层安全模块默认的技术选型,他可以实现强大的web安全控制,对于安全控制,只需要引入spring-starter-security模块,进行少量的配置,即可实现强大的安全管理。

几个类:

  • WebSecurityConfigurerAdapter: 自定义Security策略

  • AuthenticationManagerBuilder:自定义认证策略

  • @EnableWebSecurity: 开启WebSecurity模式,@EnableXXXX开启某个功能

    spring security 的两个主要目标是“认证”Authentication和“授权“Authorization(访问控制)

    这两个概念相同,不只是在spring security中存在。

  1. 框架需要做的事

    • 功能权限(理解为管理员和普通成员对应的功能)
    • 访问权限(理解为需要授权,登录)
    • 菜单权限 (理解为分角色)

2. spring security 与 shiro 与 过滤器,拦截器

只在使用方面比较:

spring security 简单易用,spring家族天然集成。
shiro属于阿帕奇,使用较为复杂,配置类较多,但功能强大。
过滤器,拦截器… 需要大量配置,大量判断,代码显得冗余。

3. 具体配置使用

一个配置类搞定

package cn.bitqian.config;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;/*** @description spring security test* @author echo lovely* @date 2020/10/25 19:46*/@EnableWebSecurity // 启用安全框架
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {// 授权@Overrideprotected void configure(HttpSecurity http) throws Exception {// 链式编程http.authorizeRequests().antMatchers("/").permitAll(). // 首页允许所有人访问antMatchers("/level1/**").hasRole("vip1"). // vip1才能访问level1..antMatchers("/level2/**").hasRole("vip2").antMatchers("/level3/**").hasRole("vip3");// 没有权限默认会到登录页面,需要开启的登录页面// 账号 密码 与 表单的name要一致http.formLogin().loginPage("/login").loginProcessingUrl("/login"). // 指定一个特殊的页面登录!usernameParameter("username").passwordParameter("password");// 支持post请求http.csrf().disable();// 注销 退出登录到login 页面http.logout().logoutSuccessUrl("/login");// 记住我 cookiehttp.rememberMe().rememberMeParameter("remember"); //记住我表单}// 认证方式@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {// 内存数据auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("jack").password(new BCryptPasswordEncoder().encode("123")).roles("vip1", "vip2").and().withUser("root").password(new BCryptPasswordEncoder().encode("123")).roles("vip1", "vip2", "vip3").and().withUser("guest").password(new BCryptPasswordEncoder().encode("123")).roles("vip1");}}

更多请访问git。

spring security 认证与权限控制相关推荐

  1. Spring Security实现登录权限控制,记住我等功能

    文章目录 1.Spring Security简介 2.登录权限控制 2.1.基本功能 2.2.登录和未登录导航栏显示 2.3.根据权限显示不同页面功能 3.定制登录页和记住我功能 3.1.定制登录页 ...

  2. Spring Security用户认证和权限控制(默认实现)

    1 背景 实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作. Spring Security是一个安全相关的框架 ...

  3. Springboot + Spring Security 实现前后端分离登录认证及权限控制

    Spring Security简介 Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展 ...

  4. Spring Security认证过程

    2019独角兽企业重金招聘Python工程师标准>>> Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一 ...

  5. 动态参数 maven_Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  6. Spring Security + JWT实现权限管理

    1 写在之前 本博客主要使用Spring Boot 整合Spring Security + JWT实现权限管理,利用JWT工具生成token,返回给登录接口.在访问其他接口时,采用Bearer Tok ...

  7. 用Python建设企业认证和权限控制平台

    目前大家对Python的了解更多来源是数据分析.AI.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...

  8. spring security认证的底层实现

    一.官方认证图 发起认证请求,请求中携带用户名.密码,该请求会被UsernamePasswordAuthenticationFilter 拦截 在UsernamePasswordAuthenticat ...

  9. Keycloak简单几步实现对Spring Boot应用的权限控制,程序员Java基础案例教程

    关注并星标 码农小胖哥,第一时间获取相关干货文章. 客户端 === 相信不少同学用过微信开放平台.蚂蚁开放平台.首先我们需要在这些开放平台上注册一个客户端以获取一套类似用户名和密码的凭证.有的叫app ...

最新文章

  1. 【剑指offer】面试题四:替换空格
  2. 网络安全、Web安全、渗透测试之笔经面经总结(二)
  3. python文件地址拼接
  4. 从一个简单的Java单例示例谈谈并发
  5. Android-即时通训
  6. 去掉表中字段空的空格或换行符
  7. Android 框架揭秘 --读书笔记
  8. Java单机版坦克大战 带音效
  9. 软件测试理论知识总结
  10. 最新Oreo易支付源码开源版
  11. openg-光照贴图
  12. 【转】Java-满天繁星案例
  13. AliOS Things物联网操作系统学习第一步:Windows下AliOS Things开发环境搭建
  14. kaid mfc特征
  15. 一年365天,每周5个工作日,进步1%,两个休息日退步1%,最终进步到多少
  16. 服务器1521端口被关闭,如何开启
  17. 分布式系统监控软件——zabbix详解(七) zabbix+ (qqmail 或者 第三方报警平台(睿象云))的 报警实现
  18. STM32之数据采集和心率检测仪(原理图、PCB、程序源码等)超详细!!!
  19. 2016年上半年阅读书单
  20. Machine Learning for Malware Detection

热门文章

  1. “睡服”面试官系列第八篇之iterator(建议收藏学习)
  2. oracle之单行函数2
  3. 前端学习(1304):package.json
  4. 前端学习(924):client系列
  5. java学习(57):内部类
  6. java学习(10):数据类型
  7. 基于域名的apache服务器
  8. Qt 实现QT控件中的QLabel显示图片并自适应显示
  9. RS(2)--从文本数据到用户画像
  10. 机器学习算法总结--GBDT