1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

spring-boot启用security组件 · 下

前言

经过昨天和前天的分享,我们对security有了一些基本的认识,同时也可以基于它做一些简单的应用,但是学习知识不能一知半解,这样即不方便应用,也不方便我们对知识的整体理解和掌握,所以为了能够对security有更深入的了解和认识,我们今天还是继续了解sercurity组件。

今天的内容主要是对HttpSecurity的配置做一些补充说明,为我们明天做完整demo做准备,好了,下面我们直接开始吧。

自定义登录

今天我们主要分享自定义登录相关内容。

修改配置

首先我们要修改配置类,我们先说configure(HttpSecurity http)方法:

下面我们分块讲解,先说资源权限配置。

资源权限配置

这一块昨天其实也说过了,但是涉及的规则比较多,所以还是要多试多实践

http.authorizeRequests()
            // 限定 ” /user/welcome ”请求赋予角色 ROLE_USER 或者 ROLE_ADMIN
            .antMatchers("/welcome").hasAnyRole("USER", "ADMIN", "TEST")
            // 限定 ” /admin/ ”下所有请求权限赋予角色 ROLE_ADMIN
            .antMatchers("/admin/**").hasAnyAuthority("ROLE_ADMIN")
            .antMatchers("/test/**").hasAnyAuthority("ROLE_TEST", "ROLE_ADMIN")
            .antMatchers("/user/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
            // 其他路径允许签名后访问
            .anyRequest().permitAll()
            // 对于没有配置权限的其他请求允许匿名访问
            .and().anonymous()

先解释下上面的权限配置,第一行配置的/welcome,仅允许角色为USERADMINTEST的用户访问,这个是但个资源设定访问权限;

第二行指定的是/admin/**,仅允许拥有管理权限的用户访问,因为是通配符,所以admin/路径下的所有资源都可以访问;

第三行和第四行的配置和第二行差不多,不过访问权限指定的是多权限,只要具备其中一个权限即可访问;

第五行和第六行是设定其他未设定权限的资源访问权限,一般只指定一种即可。关于两者的区别,网上有种说法是,匿名资源只允许不登录的用户访问,已登录的用户无法访问,而permitAll没有这种限制,但是我实际测试发现,两者没有本质区别,等后续深入了解之后再来探讨吧,有小伙伴清楚的,也可以留言,让我们都知道下。

登录页面设置

这里主要是设置登录相关的处理接口和页面,通过这里的配置,我们可以用自己的接口替换security组件的默认配置,实现更灵活的鉴权设置。

// 使用spring security 默认的登录页面
			// 设置登录相关页面
            .and().formLogin()
            // 登录页
            .loginPage("/userLogin")
            // 登录处理接口
            .loginProcessingUrl("/loginService")
             // 登录成跳转理页面
            .successForwardUrl("/user/welcome")
             // 登录成功处理器
            .successHandler(successHandler)
            // 默认成功页面
            .defaultSuccessUrl("/welcome")
            // 失败跳转页面
            .failureForwardUrl("/fail")           
            // 失败处理器
            .failureHandler(handler)

这里,我们简单解释下,第三行设置的是登录页面,也就是我们前天分享内容中的登录页:

第四行设置的是登录处理接口,这里必须是post接口,如果是get接口登录的时候,返回是有问题的:

经过我的实测,发现前端请求的时候必须是post(不论后端是post还是get,这也说明在spring-boot中,get接口是支持post方式请求,但是反过来不行),如果是get请求,就是上面的错误。

第五行设置的是登录成功后的页面;

第六行设置的是登录成功处理器,这个和第五行的页面是冲突的,但是后面的配置会覆盖前面的设置(谁在后面就会覆盖前面的设置),这里我们可以根据自己的需要设定返回值的类型,比如json

第七行设置的是默认登录成功页,和第五行设置的一样,这个设置也会和处理器冲突,区别是第五行的设置会跳转到新的页面,地址栏会发生改变,第七行的设置会返回一个新的页面替换当前页面的内容,但是地址栏不会发生变化,就像forwardsendRedirect的区别。

第八行设置失败跳转页面,这里和第五行类似,不过是跳转失败页;

最后一个设置的是失败处理器,这里我们可以设定的自己的处理器,让他返回json

其他配置

这里主要讲两个设置,一个就是用户的remeberMe设置,和跨域攻击验证设置。

 // 记住我,token过期时间,用户cookie名
            .and().rememberMe().tokenValiditySeconds(30).key("remember-me")
            // 启动 HTTP 基础验证
            .and().httpBasic().and()
            // 禁用跨域csrf验证
            .csrf().disable();

remeberMe设置的是用户的cookie信息,tokenValiditySeconds设置的token过期时间,key设置的是cookie的名字。但是这里设置了,好像没啥用,应该是我打开方式不对,后面再研究下。

最后一行设置的是禁用csrf校验,如果你的接口有跨域登录的错误的话,解决方法就是禁用跨域校验。

总结

今天主要是一些补充内容,相比昨天会更细致,内容也更丰富,但是还有一些内容还没分享,比如登录成功处理器、登录失败处理器、登录认证处理器等,这些内容我打算明天放到具体实例中分享,所以明天的内容也很多,明天我会分享一个security的实例,实现完整的登录鉴权等操作,让大家可以更直观地认识security,好了,今天就先到这里吧!

posted @ 2021-07-26 14:30  云中志  阅读(73)  评论(0编辑  收藏  举报