• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot与SpringSecurity整合方法附源码

springboot 搞代码 4年前 (2022-01-05) 26次浏览 已收录 0个评论

这篇文章主要介绍了SpringBoot与SpringSecurity整合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

依赖

   org.springframework.bootspring-boot-starter-web<!-- Thymeleaf --> org.thymeleafthymeleaf-spring5 org.thymeleaf.extrasthymeleaf-extras-java8time<!-- SpringSecurity --> org.springframework.bootspring-boot-starter-security<!-- Thymeleaf 与 SpringSecurity 整合包 --> org.thymeleaf.extrasthymeleaf-extras-springsecurity53.0.4.RELEASE org.springframework.bootspring-boot-starter-testtest  org.junit.vintagejunit-vintage-engine

Controller:

 package com.blu.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class RouterController { @RequestMapping({ "/", "/index" }) public String index() { return "index"; } @RequestMapping("/tologin") public String toLogin() { return "views/login"; } @RequestMapping("/level1/{id}") public String level1(@PathVariable("id") int id) { return "views/level1/" + id; } @RequestMapping("/level2/{id}") public String level2(@PathVariable("id") int id) { return "views/level2/" + id; } @RequestMapping("/level3/{id}") public String level3(@PathVariable("id") int id) { return "views/level3/" + id; } }

SecurityConfig:

 package com.blu.config; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter{ /** * 授权 */ @Override protected void configure(HttpSecurity http) throws Exception { //所有人可以访问首页,功能页需要指定权限才可以访问 http.authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/level1/**").hasRole("vip1") .antMatchers("/level2/**").hasRole("vip2") .antMatchers("/level3/**").hasRole("vip3"); //没有权限将默认跳转至登录页,需要开启登录的页面 //loginPage设置跳转至登录页的请求(默认为/login) //usernameParameter和passwordParameter配置登录的用户名和密码参数名称,默认就是username和password //loginProcessingUrl配置登录请求的url,需要和表单提交的url一致 http.formLogin().loginPage("/tologin") .usernameParameter("username") .passwordParameter("password") .loginProcessingUrl("/login"); //禁用CSRF保护 http.csrf().disable(); //开启注销功能和注销成功后的跳转页面(默认为登录页面) http.logout().logoutSuccessUrl("/"); //开启记住我功能,Cookie默认保存两周 http.rememberMe().rememberMeParameter("remember"); } /** * 认证 */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) .withUser("BLU").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3") .and() .withUser("root").password(new BCryptPasswordEncoder().encode("111111")).roles("vip1","vip2","vip3") .and() .withUser("guest").password(new BCryptPasswordEncoder().encode("111222")).roles("vip1"); } }

注:以上方式认证的用户和角色信息是存储在内存中的,在实际开发中应该从数据库中获取,详见:SpringSecurity从数据库中获取用户信息进行验证

index.html

   <title>首页</title><!--semantic-ui--> <!--主容器--><div class="ui container"> <div class="ui segment" id="index-header-nav"> <div class="ui secondary menu"> 首页<!--登录注销--><div class="right menu"> <!--如果未登录--><div>  <i class="address card icon"></i> 登录 </div><!--如果已登录--><div>  <i class="address card icon"></i> 用户名:<span></span> 角色:<span></span></div><div>  <i class="address card icon"></i> 注销 </div></div></div></div><div class="ui segment" style="text-align: center"> <h3>Spring Security Study by BLU</h3></div><div> <br><div class="ui three column stackable grid"> <div class="column"> <div class="ui raised segment"> <div class="ui"> <div class="content"> <h5 class="content">Level 1</h5><hr><div><i class="bullhorn icon"></i> Level-1-1</div><div><i class="bullhorn icon"></i> Level-1-2</div><div><i class="bullhorn icon"></i> Level-1-3</div></div></div></div></div><div class="column"> <div class="ui raised segment"> <div class="ui"> <div class="content"> <h5 class="content">Level 2</h5><hr><div><i class="bullhorn icon"></i> Level-2-1</div><div><i class="bullhorn icon"></i> Level-2-2</div><div><i class="bullhorn icon"></i> Level-2-3</div></div></div></div></div><div class="column"> <div class="ui raised segment"> <div class="ui"> <div class="content"> <h5 class="content">Level 3</h5><hr><div><i class="bullhorn icon"></i> Level-3-1</div><div><i class="bullhorn icon"></i> Level-3-2</div><div><i class="bullhorn icon"></i> Level-3-3</div></div></div></div></div></div></div></div>

views/login.html

   <title>登录</title><!--semantic-ui--> <!--主容器--><div class="ui container"> <div class="ui segment"> <div style="text-align: center"> <strong style="color:transparent">来源gaodai#ma#com搞@代~码网</strong><h1 class="header">登录</h1></div><div class="ui placeholder segment"> <div class="ui column very relaxed stackable grid"> <div class="column"> <div class="ui form">  <div class="field"> <label>Username</label><div class="ui left icon input"> <i class="user icon"></i></div></div><div class="field"> <label>Password</label><div class="ui left icon input"> <i class="lock icon"></i></div></div><div class="field">  记住我 </div></div></div></div></div><div style="text-align: center"> <div class="ui label"> </i>注册 </div><br><br><small>[email protected]</small></div><div class="ui segment" style="text-align: center"> <h3>Spring Security Study by BLU</h3></div></div></div>

views/level1/1.html

   <title>首页</title><!--semantic-ui--> <!--主容器--><div class="ui container"> <div></div><div class="ui segment" style="text-align: center"> <h3>Level-1-1</h3></div></div>

views/level2/1.html 等其他页面:略

运行

项目源码:

链接: https://pan.baidu.com/s/1AtbcCht84NT-69-sSUAQRw

提取码: nh92

以上就是SpringBoot与SpringSecurity整合方法附源码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot与SpringSecurity整合方法附源码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址