Springboot2.0 Theamleaf Security整合快速入门

Spring Security是Spring Boot底层安全模块默认的技术选型。进行少量的配置,即可实现强大的安全管理。前后端未分离并且使用spring框架时,建议使用Security,否则建议Shiro。

Security主要修改几个类:

WebSecurityConfigurerAdapter:自定义Security策略

AuthenticationManagerBuilder:自定义认证策略

@EnableWebSecurity:开启WebSecurity模式

快速开始,本个项目用到了theamleaf模板引擎,需要引入跟theamleaf有关的2个包,spring-boot-starter-thymeleaf,thymeleaf-extras-springsecurity4,在引入security和web的star ter包开始正文,创建配置类,开始自定义配置:

首先创建一个配置类,继承

WebSecurityConfigurerAdapter,需要注解@EnableWebSecurity开启,重写configure(HttpSecurity http)和configure(AuthenticationManagerBuilder auth)

此图中的方法详解

1、super.configure(http);//定制请求的授权规则http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("VIP1").antMatchers("/level2/**").hasRole("VIP2").antMatchers("/level3/**").hasRole("VIP3");2、//开启自动配置的登陆功能,效果,如果没有登陆,没有权限就会来到登陆页面http.formLogin().usernameParameter("user").passwordParameter("pwd").loginPage("/userlogin");//1、/login来到登陆页//2、重定向到/login?error表示登陆失败//3、更多详细规定//4、默认post形式的 /login代表处理登陆//5、一但定制loginPage;那么 loginPage的post请求就是登陆3、//开启自动配置的注销功能。http.logout().logoutSuccessUrl("/");//1、访问 /logout 表示用户注销,清空session//2、注销成功会返回 /login?logout 页面;4、//开启记住我功能http.rememberMe().rememberMeParameter("wcn");//登陆成功以后,将cookie发给浏览器保存,以后访问页面带上这个cookie,只要通过检查就可以免登录//点击注销会删除cookie

重写的第二个方法为增加可验证的用户,实际操作是从数据库获得,这里暂时放在内存,方便演示。

彩蛋::因为Security5.0的密码验证的问题,需要给密码进行加密,否则会报错,我就重写了一个简单的继承于passwordEncoder的MypasswordEncoder,返回原来的字符串.

前端的欢迎页面,

加入theamleaf标签,加入标签方法

isAuthenticated()表示是否登录验证过sec:authentication="name"登录名sec:authentication="principal.authorities"所包含的角色权限sec:authorize="hasRole('VIP1')"是否有VIP1的权限

开始演示记住与重写的配置相关,记住后会存入cookie,每次会与服务端验证,默认有效期14天。图1

图2

图3

Wcn账号是铂金,会员,所以有黄金会员和铂金会员的权限,查看不到钻石会员的权限,Cl是钻石会员,所以都能显示Wangchenning是黄金会员,只能显示黄金会员的菜谱登出后会删除cookie。好啦,Security5.0的教程就此暂告段落。下次给shiro教程和dubbo快速入门教程

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719G1CJLI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券