- 博客(71)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 SpringSecurity 跨域问题 Cors
在SpringBoot中只需要在Controller上添加@CrossOrigin,而在导入SpringSecurity后将会失效,所以需要我们在SpringSecurity中再进行配置public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.c
2021-03-25 23:28:24 1589
原创 SpringSecurity Basic Authentication
当使用非浏览器处理Basic HTTP Authentication认证时,需post请求携带auth参数即可Basic HTTP Authentication认证过程1.用户访问未授权的private2.FilterSecurityInterceptor抛出AccessDeniedException3.ExceptionTranslationFilter开始作用,调用BasicAuthenticationEntryPoint发送WWW-Authenticate header.当客户端收到WWW-
2021-03-22 23:38:18 577
原创 SpringSecurity Form Login
登录过程1)首先,访问没有授权的/private2)FilterSecurityInterceptor拒绝访问,并抛出AccessDeniedException3)ExceptionTranslationFilter根据AuthenticationEntryPoint重定向到/login4)浏览器根据重定向,访问login5)渲染登录界面当用户在登录界面输入用户名和密码后,进入到了AbstractAuthenticationProcessingFilter流程,这里是具体的实现类Usernam
2021-03-22 23:37:57 293
原创 SpringSecurity AbstractAuthenticationProcessingFilter
1.AbstractAuthenticationProcessingFilter从HttpServletRequest中创建AuthenticationAuthentication的类型根据AbstractAuthenticationProcessingFilter的子类决定,比如:1)UsernamePasswordAuthenticationFilter 创建一个UsernamePasswordAuthenticationToken所以如果遇到不能认证的Token就会抛出异常2.Authent.
2021-03-22 23:37:28 769
原创 SpringSecurity AuthenticationManager&ProviderManager
ProviderManager是AuthenticationManager的实现.ProviderManager代理多个AuthenticationProvider(是Authentication的实现),每个AuthenticationProvider决定是认证成功,失败还是交由下游处理.如果遇到不能处理的类型则会报错.每个AuthenticationProvider代表一个特别的认证方式,比如:1)DaoAuthenticationProvider 支持 username/password ba
2021-03-22 23:37:00 347
原创 SpringSecurity Authentication
Authentication是用户认证的信息,会提供给AuthenticationManager,所以刚创建时要设置他的isAuthenticated()返回false1)principal 对应 UserDetail2)credentials 对应 password3)authoritis 对应 GrantedAuthority参考:https://docs.spring.io/spring-security/site/docs/5.4.5/reference/html5/#servlet-a
2021-03-22 23:36:33 387 1
原创 SpringSecurity SecurityContextHolder&SecurityContext
SecurityContextHolder用来存储一次访问的用户信息SecurityContextHolder通过ThreadLocal来实现,所以是线程安全的SecurityContextHolder包含了SecurityContext,而SecurityContext包含Autherntication.SecurityContext context = SecurityContextHolder.createEmptyContext(); Authentication authenticati.
2021-03-22 23:36:12 663
原创 SpringSecurity Exceptions
ExceptionTranslationFilter可以将AccessDeniedException和AuthenticationException转换为HTTP responses.参考:https://docs.spring.io/spring-security/site/docs/5.4.5/reference/html5/#servlet-exceptiontranslationfilter
2021-03-22 23:35:47 214
原创 SpringSecurity Filter顺序
Spring Security Filter的顺序:ChannelProcessingFilterWebAsyncManagerIntegrationFilterSecurityContextPersistenceFilterHeaderWriterFilterCorsFilterCsrfFilterLogoutFilterOAuth2AuthorizationRequestRedirectFilterSaml2WebSsoAuthenticationRequestFilterX509A
2021-03-22 23:35:24 745
原创 SpringSecurityFilterChain
Security Filter 在SecurityFilterChain中是Beans,通过FilterChainProxy代理来注册.在普通的Servlet container中,Fitler只能通过url来调用.而FilterChainProxy则可以通过RequestMatcher接口,来实现灵活调用.参考:https://docs.spring.io/spring-security/site/docs/5.4.5/reference/html5/#servlet-securityfilt
2021-03-22 23:35:01 294
原创 SpringSecurity Filter
FilterSpring Security’s Servlet 基于 Servlet Filters.客户端发送一个请求到application,容器(tomcat)创造了FilterChaain(包含Filter和Servlet)来处理请求(HttpServletRequest).在SpringMVC中servlet就是DispatcherServlet.最多一个Servlet处理一个请求和相应.,而可以有多个filter来:1)阻止访问下游(downstream)的fitler或servlet
2021-03-22 23:34:35 214 1
原创 Spring Security UserDetail
userdetail接口public interface UserDetails extends Serializable { Collection<? extends GrantedAuthority> getAuthorities();//用户的权限集, 默认需要添加ROLE_ 前缀 String getPassword();//用户的加密后的密码, 不加密会使用{noop}前缀 String getUsername();//应用内唯一的用户名 boolea
2021-03-19 21:39:02 795
原创 Spring Security HttpSecurity.formLogin
http .formLogin()// .usernameParameter("username123")//自定义入参,需要和前端保持一致,默认是username// .passwordParameter("password123")//自定义入参,需要和前端保持一致,默认是password .loginPage("/login.html") .loginProcessi...
2021-03-19 21:38:16 1067
原创 Spring Security HttpSecurity.authorizeRequests
http.authorizeRequests() .antMatchers("/login.html").permitAll()//放行/login.html,不需要认证 // .antMatchers("/css/**","/js/**","/images/**").permitAll()//放行静态资源 // .antMatchers("/**/*.png").permitAll()//放行...
2021-03-19 21:36:56 5839
原创 Spring Security login
参考文献:https://www.websparrow.org/spring/spring-security-jdbc-authentication-with-spring-boothttps://grobmeier.solutions/spring-security-5-intro-form-login.htmlhttps://www.codejava.net/frameworks/spring-boot/form-authentication-with-jdbc-and-mysql...
2021-03-19 21:36:31 385
原创 Spring Security UserDetailsService
最终还是由AuthenticationManager来调用参考:https://blog.csdn.net/qq_39329616/article/details/89978773https://my.oschina.net/yangzijing/blog/3038140
2021-03-19 21:36:05 113
原创 Spring Security AuthenticationManagerBuilder
参考:https://blog.csdn.net/u012702547/article/details/107530246https://www.e-learn.cn/content/qita/2340647
2021-03-19 21:35:40 336
原创 git rebase branch内部调整 调整commit顺序
git rebase -i commitIDcommitID相当于根,所以调整的是下游的commitID命令行处理1.准备数据文本内容version1version2version3version46d9da8c (HEAD -> master) version477f4597 version32c9a2d1 version28f53d32 version12.git rebase 2c9a2d1 变基到version2的commit我们想要调整version3和ve
2021-03-19 21:34:11 1921
原创 git rebase --onto
是 git rebase upstream branch的增强,用于三个分支的切换git rebase -i --onto upstream branch childbranch可以参考官方文档
2021-03-18 23:44:24 427
原创 git branch detached
detached(游离)分支,是一种特殊的分支,1.在git checkout之前的commit之后,提交会出现2.在reset 时会出现特点:1.假如HEAD离开了deached分支,分支就是消失(可以使用reflog找回)2.在detached分支上,任意commit上都可以使用branch,这样就会将detached分支转换一个正常的分支...
2021-03-18 23:42:04 736
原创 git rebase 两个交叉branch换基
1 向下游移动base下游移动base,根节点是两个分支的交叉点1.初始化数据* c54f8b7 (HEAD -> b) version3 b| * f9fc6be (a) version4 a| * 730cb6a version3 a|/* 604ad92 version2 //a和b的交点,既base* 648ef5e version12.rebase 换基此时HEAD在b分支上,我们可以现在base是version2,我们可以将b分支的base改为version1~4的
2021-03-18 23:17:14 763
原创 git rebase基础
base是根的意思.所谓的根就是两个branch交叉点,交叉点以下是两个branch共有的.有个误区是,交叉点以下的部分只属于某一个branch.三大命令1)git rebase -i upstream [branch]upstream就是要移植到的base,可以是branch,也可以是commit id.branch是要要移植的branch,默认是HEAD所在branch2).git rebase -i --onto upstream branch childbranch1)的命令加强版
2021-03-18 21:43:12 288
原创 docker network host模式
宿主机在同一个网络中,但没有独立IP地址。Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置
2021-03-17 23:57:42 8108
原创 git revert
1.准备数据,每次提交一行2.revert 到version23.弹出冲突4.处理冲突5.跳出正常的commit处理界面git 命令操作以上操作相当于//1.指定revert的commit,HEAD~2是自身以0为起点,数三个commit(version2),然后用下一个(version1)的commit来mergegit revert HEAD~2//或者git revert 4c7907(version的id)//2.处理冲突处理冲突//3.继续git revert -
2021-03-17 23:57:28 108
原创 git rebase 修改提交信息
rewordpick:保留该commit(缩写:p)reword:保留该commit,但我需要修改该commit的注释(缩写:r)edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash:将该commit和前一个commit合并(缩写:s)fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)exec:执行shell命令(缩写:x)drop:我要丢弃该commit(缩写:d)...
2021-03-17 23:57:15 274
原创 git rebase 丢弃提交
droppick:保留该commit(缩写:p)reword:保留该commit,但我需要修改该commit的注释(缩写:r)edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash:将该commit和前一个commit合并(缩写:s)fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)exec:执行shell命令(缩写:x)drop:我要丢弃该commit(缩写:d)...
2021-03-17 23:57:04 1028
原创 git rebase 合并中间的提交
1.准备数据,每次提交一行2.rebase3.将version3合并到version2pick:保留该commit(缩写:p)reword:保留该commit,但我需要修改该commit的注释(缩写:r)edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash:将该commit和前一个commit合并(缩写:s)fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)exec:执行shell命令(缩写:x)dr
2021-03-17 23:56:52 597
原创 git checkout&branch 回退到某个版本进行修改
1.准备数据,每次提交一行2.返现版本version2有bug需要修改3.修复bug并提交此时如果不慎切换到其他分支(比如,checkout master)可使用git reflog,找到deteched的commit,并checkout过去,参考.4.创建新branch,来保留此次提交(不建议使用 git reflog太麻烦)1)在detached点上创建分支此时fixbug已经保存好了,这个时候就可以将这个版本发布了5.将fixbug版本,和我们最新开发的版本合并1)切回ma
2021-03-17 23:56:36 761
原创 git rebase 调整commit顺序
1.准备数据,每次提交一行2.rebase3.互换提交位置4.处理冲突因为version3和version2互换了位置,所以处理顺序是先提交version3,在提交version2,最后再提交version41)处理version3的提交看一下本次提交的本质:在version1上提交了version3(具体处理时,是用version3 merge version1,然后将改变提交到version1上)2)处理version2和version4的提交,最后结果version2和v
2021-03-17 23:56:25 2754
原创 git stash
1.准备数据,每次提交一行2.我们先在当前版本version4中修改3.保存修改此时发现version2有bug,需要跳回操作.所以先把刚才的修改保存起来(一个专门临时存放临时修改数据的地方)4.checkout version2中进行操作version2的版本checkout是将HEAD移动到某个commit,并将暂存区的内容覆盖到workspace(工作区),(此时这个commit的index(索引区)和stage(暂存区)是一致的)5.修改好后,回到最新版本version4
2021-03-17 23:56:13 186
2016最新中国行政区划分
2016-12-12
CSDN 如何搜索自己感兴趣的问题回答?
2017-05-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人