你还不了解SpringSecurity吗?快来看看SpringSecurity实战总结~
- org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter
org.springframework.security.web.context.SecurityContextPersistenceFilter
org.springframework.security.web.header.HeaderWriterFilter
org.springframework.security.web.csrf.CsrfFilter
org.springframework.security.web.authentication.logout.LogoutFilter
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter
org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter
org.springframework.security.web.savedrequest.RequestCacheAwareFilter
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
org.springframework.security.web.authentication.AnonymousAuthenticationFilter
org.springframework.security.web.session.SessionManagementFilter
org.springframework.security.web.access.ExceptionTranslationFilter
org.springframework.security.web.access.intercept.FilterSecurityInterceptor
- 1 @Configuration //告诉SpringBoot该类是一个配置类,自动装配到IOC容器
- 2 @EnableWebSecurity //全局开启SpringSecurity
- 3 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) //开启权限注解,之后会介绍
- 4 public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
- 5 @Override
- 6 protected void configure(HttpSecurity http) throws Exception {
- 7 //添加自定义过滤器在某过滤器前执行
- 8 http.addFilterBefore(wrapperFilter, UsernamePasswordAuthenticationFilter.class);
- 9 //添加自定义过滤器在某过滤器之后
- 10 http.addFilterAfter(filter,UsernamePasswordAuthenticationFilter.class);
- 11 //添加过滤器在最后
- 12 http.addFilter(filter);
- 13 }
- 14 }
- 1 .rememberMe()
- 2 .tokenRepository(tokenRepository) //记住我的token管理Dao,操作数据库的记住我缓存
- 3 .tokenValiditySeconds(60) //token的有效时长
- 1 .formLogin()
- 2 .loginPage("/login_page") //登陆页面
- 3 .loginProcessingUrl("/login") //登陆请求处理接口,Spring security默认的处理登录接口是/login这个自带的接口
- 4 .usernameParameter("name") //指定用户名参数名称
- 5 .passwordParameter("passwd") //指定密码参数名称
- 6 .permitAll() //将登录操作url放行
- .authorzeRequests()
- .antMatchers("/admin/**")
- .hasRole("ADMIN") //具备特定角色可访问
- .antMatchers("/user/**")
- .access("hasAnyRole('ADMIN','USER')") //参数以表达式方式书写,多个以 and 连接
- //除了.permitAll()的url,其余所有URL需要认证后访问
- .anyRequest()
- .authenticated()
logout(登出):
- 1 .logout() //开启注销登陆
- 2 .logoutUrl("/logout") //注销登陆请求url
- 3 .clearAuthentication(true) //清除身份信息
- 4 .invalidateHttpSession(true) //session失效
- 5 .addLogoutHandler(new LogoutHandler() { //注销处理
- 6 @Override
- 7 public void logout(HttpServletRequest req,
- 8 HttpServletResponse resp,
- 9 Authentication auth) {
- 10
- 11 }
- 12 })
- 13 .logoutSuccessHandler(new LogoutSuccessHandler() { //注销成功处理
- 14 @Override
- 15 public void onLogoutSuccess(HttpServletRequest req,
- 16 HttpServletResponse resp,
- 17 Authentication auth)
- 18 throws IOException {
- 19 resp.sendRedirect("/login_page"); //跳转到自定义登陆页面
- 20 }
- 21 })
1 .csrf().disabl(); //前后端分离时一般关闭
- 认证用户实现UserDetails接口
- 用户来源的Service实现UserDetailsService接口,实现loadUserByUsername()方法,从数据库中获取数据
- 实现自己的过滤器继承UsernamePasswordAuthenticationFilter,重写attemptAuthentication()和successfulAuthentication()方法实现自己的逻辑
- Spring Security的配置类继承自WebSecurityConfigurerAdapter,重写里面的两个config()方法
- 如果使用RSA非对称加密,就准备好RSA的配置类,然后在启动类中加入注解将其加入IOC容器
- securedEnable=true 开启@Securd注解
- prePostEnable=true 开启@Preauthorize@PostAuthorize注解
- 1 @Service
- 2 public class MethodService {
- 3 @Secured("ROLE_ADMIN") //访问此方法需要ADMIN角色
- 4 public String admin() {
- 5 return "hello admin";
- 6 }
- 7 @PreAuthorize("hasRole('ADMIN') and hasRole('DBA')") //访问此方法需要ADMIN且DBA
- 8 public String dba() {
- 9 return "hello dba";
- 10 }
- 11 @PreAuthorize("hasAnyRole('ADMIN','DBA','USER')") //三个都行
- 12 public String user() {
- 13 return "user";
- 14 }
- 15 }

你还不了解SpringSecurity吗?快来看看SpringSecurity实战总结~的更多相关文章
- 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
- 面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1.什么是 Redis?. 2.Redis 的数据类型? 3.使用 Redis 有哪些好处? 4.Redis 相比 Memcached 有哪些优势? 5.Memcache 与 Re ...
- 【转】面试还搞不懂redis,快看看这40道Redis面试题(含答案和思维导图)
———————————————— 版权声明:本文为CSDN博主「程序员追风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog. ...
- 金融数据分析还能这样做?快试试这个BI工具小白也能学会!
说起银行.保险.股票投资等这些金融行业,大多数人都认为它们都是依靠数据驱动的企业,毕竟大数据的诞生本来就是为了金融信息流通而服务的,但是事实真的是这样吗? 事实并非如此,真正在金融行业做数据分析的人, ...
- 2020面试还搞不懂MyBatis?快看看这27道面试题!(含答案和思维导图)
前言 MyBatis是一个优秀的持久层ORM框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statem ...
- Docker竟然还能这么玩?商业级4G代理搭建实战!
时间过得真快,距离这个系列的上一篇文章<商业级4G代理搭建指南[准备篇]>发布的时间已经过了两个星期了,上个星期由于各种琐事缠身,周二开始就没空写文章了,所以就咕咕咕了. 那么在准备篇中, ...
- 轻松上手SpringBoot+SpringSecurity+JWT实RESTfulAPI权限控制实战
前言 我们知道在项目开发中,后台开发权限认证是非常重要的,springboot 中常用熟悉的权限认证框架有,shiro,还有就是springboot 全家桶的 security当然他们各有各的好处,但 ...
- 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
- CyberArticle(eLib电子图书馆)网文快捕
CyberArticle (网文快捕)是一款知识管理软件,主要致力于网页的保存和后期管理.CyberArticle (网文快捕)主要功能,就是收集和整理网页.利用CyberArticle (网文快捕) ...
随机推荐
- HDFS初探之旅(一)
1.HDFS简介 ...
- GO并发相关
锁的使用 注意要成对,重点是代码中有分支或者异常返回的情况,这种情况要在异常返回前先释放锁 mysqlInstanceLock.Lock() slaveHostSql := "show sl ...
- vue2 中的 export import
vue中组件的引用嵌套通过export import语法链接 Nodejs中的 export import P1.js export default { name: 'P1' } index.js i ...
- maven常用Java配置
maven国内镜像 ------------------------------------------------------------------------------------------ ...
- 【Linux】【Shell】【text】Vim
文本编辑器: 文本:纯文本,ASCII text:Unicode: 文本编辑种类: 行编辑器:sed 全屏编辑器:nano, vi vi: Visual Interface vim: Vi IMpro ...
- SQL注入 (1) SQL注入类型介绍
SQL注入 SQL注入介绍与分类 1. 什么是sql注入 通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 2. sql注入类型 按照注入 ...
- IT服务生命周期
一.概述 IT服务生命周期由规划设计(Pianning&Design).部署实施(Implementing).服务运营(Opera,tion).持续改进(Improvemenit)和监督管理( ...
- Linux服务器被黑 排查思路
目录 一.为何会被入侵? 二.排查 入侵排查 检查是否还存在被登陆可能 计划任务 被修改的文件 筛选日志 日志恢复 找到异常进程-1 找到异常进程-2 找到异常进程-3 找到异常进程-4 三.总结 一 ...
- centos源码安装ruby
目录 一.简介 二.程序部署 一.简介 Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言.rvm是ruby的管理器,可以切换ruby版本,下载ruby. 二.程序部署 1.下载ruby w ...
- 服务器安装Centos7
目录 一.安装 一.安装 1.开启虚拟机后会出现以下界面 Install CentOS 7 安装CentOS 7 Test this media & install CentOS 7 测试安装 ...