【SpringSecurity】02 权限控制、自定义登陆、记住我

资源过滤 权限控制】

就之前的权限问题,例如一个user1登录成功去访问level1的资源当然没有问题

但是页面还呈现了其他权限的资源,比如level2 & level3 既然呈现给了user1,

user1自然而然的就会去访问这些不属于他权限的资源

所以从源头解决的话,用户看不到这些资源不就行了吗?

【Security & Thymeleaf 的结合使用】

当前使用的模板引擎是Thymeleaf,这个引擎可以和Security结合使用

注意一定要更换SpringBoot版本为2.0.9的

在Junit测试使用的包都不一样了

【SpringSecurity】02 权限控制、自定义登陆、记住我_第1张图片

把错误的导包信息删除,重新导包即可

 

组件坐标:


    org.thymeleaf.extras
    thymeleaf-extras-springsecurity4
    3.0.4.RELEASE

页面的导航栏进行设置:

然后这个页面的导航栏的标签才会其效果:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第2张图片

老版本的登陆样式:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第3张图片

效果:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第4张图片

显示的很清楚具备哪些角色

 

但是这时候注销403禁止访问了。。。

【SpringSecurity】02 权限控制、自定义登陆、记住我_第5张图片

【关闭伪造请求的防御】

解决注销403的问题

http.csrf().disable();//关闭csrf功能:跨站请求伪造,默认只能通过post方式提交logout请求

【对访问的元素控制】

可以看到首页什么资源都没有了,因为我们没有作为用户访问

【SpringSecurity】02 权限控制、自定义登陆、记住我_第6张图片

用户只能访问他们所具备的角色所具备的权限:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第7张图片

【记住我功能】

        // 记住我
        http.rememberMe();

登录页会多出一个选项:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第8张图片

如果密码错误,则不会生效,并且提示错误信息:

【SpringSecurity】02 权限控制、自定义登陆、记住我_第9张图片

如果登陆成功,则把浏览器关闭:再打开访问:

可以看到直接登陆成功了

【SpringSecurity】02 权限控制、自定义登陆、记住我_第10张图片

可以看到是一个Cookie保证我们的信息验证,保存周期14天

【SpringSecurity】02 权限控制、自定义登陆、记住我_第11张图片

如果浏览器清除了Cookie,那么这个记住我就作废了

【设置自己的Login页面】

        // 设置自己的登陆页
        http.formLogin().loginPage("/toLogin");

登陆页面的表单设置为:

 

【设置页面的记住我】

 记住我

在配置类中设置:

http.rememberMe().rememberMeParameter("rememberMe");

 

你可能感兴趣的:(【SpringSecurity】02 权限控制、自定义登陆、记住我)