您的位置:首页技术文章
文章详情页

SpringBoot Security安装配置及Thymeleaf整合

【字号: 日期:2023-04-05 10:22:28浏览:3作者:猪猪

功能:解决web站点的登录,权限验证,授权等功能

优点:在不影响站点业务代码,可以权限的授权与验证横切到业务中

1、要添加的依赖

<!--thymeleaf--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!--security 和 thymeleaf 整合包--> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <!--web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--security--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>

2、Security 下授权与验证的简单配置(Security下有登录,注销,记住我等功能,可以快速集成到自己的login页上)Tis:如果template页中使用了 Frame页,默认是不能访问的,需要添加 http.headers().frameOptions().sameOrigin();

@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { //授权 @Override protected void configure(HttpSecurity http) throws Exception { //请求授权的规则 http.authorizeRequests()//.antMatchers('/tologin').permitAll() //登录页所有人都可以访问//.antMatchers('/admin/**').hasRole('admin1').antMatchers('/admin/list').hasRole('admin1').antMatchers('/admin/role').hasRole('admin1').antMatchers('/admin/cate').hasRole('admin2').antMatchers('/admin/rule').hasRole('admin2'); // 项目里面使用了springSecurity spring Security下,X-Frame-Options默认为DENY,非spring Security环境下,X-Frame-Options的默认大多也是DENY,这种情况下,浏览器拒绝当前页面加载任何Frame页面 http.headers().frameOptions().sameOrigin(); //登录页(Security默认有一个登录页) http.formLogin().permitAll().loginPage('/tologin') //指定自定义的登录页地址.successForwardUrl('/admin/index') //登录成功跳转地址.usernameParameter('username').passwordParameter('password');//匹配自定义登录页的name元素名称 // 开启注销功能,跳转到登录页 http.csrf().disable(); //退出失败可能能的原因 http.logout().logoutSuccessUrl('/tologin'); //开启记住我功能,cookie 默认保存14天 http.rememberMe().rememberMeParameter('remember');//匹配自定义登录页的name元素名称 } //认证 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())//密码加密方式(有些版本的Security必须要指定).withUser('root').password(new BCryptPasswordEncoder().encode('123')).roles('admin1','admin2','admin3').and().withUser('yeqiu').password(new BCryptPasswordEncoder().encode('123')).roles('admin1').and().withUser('admin').password(new BCryptPasswordEncoder().encode('123')).roles('admin2'); }}

3、Security 和 Thymeleaf 页面整合(添加依赖:thymeleaf-extras-springsecurity)

<!--加入约束--><html xmlns:th='http://www.thymeleaf.org' xmlns:sec='http://www.thymeleaf.org/extras/spring-security'><!-- sec:authorize='isAuthenticated()' 用户是否登录 sec:authorize='hasAnyRole(’admin1’)' 是否具有某个角色 sec:authentication='name' 当前登录用户 sec:authentication='principal.authorities' 当前用户全部角色--><div sec:authorize='isAuthenticated()'> <h2><span sec:authentication='name'></span>,您好 您的身份是 <span sec:authentication='principal.authorities'></span> </h2></div><li sec:authorize='hasRole(’admin2’)'> <a onclick='xadmin.add_tab(’权限管理’,’admin/rule’)'> <cite>权限管理</cite> </a></li>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Spring
相关文章: