WebSecurityConfigurerAdapter简单分析
参考:https://blog.csdn.net/weixin_42849689/article/details/89957823
WebSecurityConfigurerAdapter 类是个适配器, 在配置的时候,需要我们自己写个配置类去继承他,然后编写自己所特殊需要的配置
@Configuration
@EnableWebSecurity
public class WebSecurityConfigextends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/resources/**", "/signup", "/about").permitAll().antMatchers("/admin/**").hasRole("ADMIN").antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')").anyRequest().authenticated().and().formLogin().usernameParameter("username").passwordParameter("password").failureForwardUrl("/login?error").loginPage("/login").permitAll().and().logout().logoutUrl("/logout").logoutSuccessUrl("/index").permitAll().and().httpBasic().disable();}
}
这段配置,我认为就是配置Security的认证策略, 每个模块配置使用and结尾。
authorizeRequests()配置路径拦截,表明路径访问所对应的权限,角色,认证信息。
formLogin()对应表单认证相关的配置
logout()对应了注销相关的配置
httpBasic()可以配置basic登录
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("admin").password("admin").roles("USER");}
这段配置呢, 配置的是认证信息, AuthenticationManagerBuilder 这个类,就是AuthenticationManager的建造者, 我们只需要向这个类中, 配置用户信息, 就能生成对应的AuthenticationManager, 这个类也提过,是用户身份的管理者, 是认证的入口, 因此,我们需要通过这个配置,想security提供真实的用户身份。 如果我们是使用UserDetailsService来配置用户身份的话, 这段配置改为如下:
@Overrideprotected void configure(AuthenticationManagerBuilder builder) throws Exception{builder.userDetailsService(dbUserDetailsService);}
dbUserDetailsService就是你自己写的类, 这个类的作用就是去获取用户信息,比如从数据库中获取。 这样的话,AuthenticationManager在认证用户身份信息的时候,就回从中获取用户身份,和从http中拿的用户身份做对比。
WebSecurityConfigurerAdapter简单分析相关推荐
- R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集、非线性:基函数展开和样条分析、你简单分析的不重要特征,可能只是线性不显著、而非线性是显著的
R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集.非线性:基函数展开和样条分析.你简单分析的不重要特征,可能只是线性不显著.而非线性是显著的 目录
- [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...
- FFmpeg资料来源简单分析:libswscale的sws_getContext()
===================================================== FFmpeg库函数的源代码的分析文章: [骨架] FFmpeg源码结构图 - 解码 FFmp ...
- howdoi 简单分析
对howdoi的一个简单分析. 曾经看到过下面的这样一段js代码: try{doSth(); } catch (e){ask_url = "https://stackoverflow.com ...
- Mac与Phy组成原理的简单分析
Mac与Phy组成原理的简单分析 2011-12-28 15:30:43 //http://blog.chinaunix.net/uid-20528014-id-3050217.html 本文乃fir ...
- python做数据可视化的代码_Python数据可视化正态分布简单分析及实现代码
Python说来简单也简单,但是也不简单,尤其是再跟高数结合起来的时候... 正态分布(Normaldistribution),也称"常态分布",又名高斯分布(Gaussiandi ...
- ASIHTTPRequest源码简单分析
2019独角兽企业重金招聘Python工程师标准>>> 1.前言 ASIHttprequest 是基于CFNetwork的,由于CFNetwork是比较底层的http库,功能比较少, ...
- Hessian 源码简单分析
Hessian 源码简单分析 Hessian 是一个rpc框架, 我们需要先写一个服务端, 然后在客户端远程的调用它即可. 服务端: 服务端通常和spring 做集成. 首先写一个接口: public ...
- python预测股票价格tushare_用tushare对股票进行简单分析
用tushare对股票进行简单分析(仅供交流学习) import numpy as np import pandas as pd import matplotlib.pyplot as plt imp ...
最新文章
- 基于cocos2d-x的快速的游戏开发--回合制游戏
- 12/12团队会议10
- 剑指offer--斐波那契数列
- 计算机公开课推荐 2019.8
- 网易第二季度营收205亿元 同比增长13%超预期
- 前天我看见了一只兔子,昨天是一头小鹿,而今天则是你
- angular ts 表格_Angular 2的表格控件
- oracle mysql认证考试流程_oraclemysql认证的考试流程有些什么
- VAT number 增值税号码以及GST
- [转载]W3C XML Schema 与文档类型定义
- 网吧游戏更新对比软件技术报告
- 项目文档模板_用于启动项目文档的模板
- Boren-python接小球游戏
- 游戏服务端(MMORPG)的基础算法一、AOI
- Unable to open JDBC Connection for DDL execution
- 左手技术,右手生态 英特尔如何打响名为“数据”的战争?
- [洛谷 P3788] 幽幽子吃西瓜
- 024 | 知行国学:全国领先的线上一对一国学教育平台 | 大学生创新训练项目申请书 | 极致技术工厂
- Switch和for循环的区别与联系
- PWM与电压转换芯片:APCPAC芯片