温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Java SpringBoot安全框架去整合Spring Security

发布时间:2021-09-14 11:28:54 来源:亿速云 阅读:216 作者:柒染 栏目:开发技术

如何使用Java SpringBoot安全框架去整合Spring Security,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

    1.工业级安全框架介绍

    Spring Security基于Spring开发,项目中如果使用Spring作为基础,配合Spring Security做权限更加方便,而Shiro需要和Spring进行整合开发。因此作为spring全家桶中的Spring Security在java领域很常用。

    2.建议搭建Spring Security环境

    2.1在pom.xml中添加相关依赖

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>org.example</groupId>     <artifactId>springsecurityReview</artifactId>     <version>1.0-SNAPSHOT</version>     <parent>         <artifactId>spring-boot-dependencies</artifactId>         <groupId>org.springframework.boot</groupId>         <version>2.5.4</version>     </parent>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-security</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-thymeleaf</artifactId>         </dependency>     </dependencies> </project>

    2.2创建Handler类

    package com.example.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class Handler {     @GetMapping("/index")     public String index(){         return "index";     } }

    2.3创建简单的html和配置相关thymeleaf的路径

    如何使用Java SpringBoot安全框架去整合Spring Security

    2.4最后再加个启动类,那么我们的整合测试就完成勒

    package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application {     public static void main(String[] args) {         SpringApplication.run(Application.class,args);     } }

    2.5成果展示 用户名默认user,密码则随机生成的这串数字

    如何使用Java SpringBoot安全框架去整合Spring Security

    如何使用Java SpringBoot安全框架去整合Spring Security

    3.进阶版使用

    3.1用户名和密码自定义

    如何使用Java SpringBoot安全框架去整合Spring Security

    3.2在config包下创建Encoder

    进行密码的校验和转码操作,将密码转成字符串形式,并通过match方法惊醒校验。

    如何使用Java SpringBoot安全框架去整合Spring Security

    3.3赋予账号角色权限

    package com.example.config; import org.springframework.context.annotation.Configuration; 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.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {     //角色和资源的关系     @Override     protected void configure(HttpSecurity http) throws Exception {         http.authorizeRequests().antMatchers("/admin").hasRole("ADMIN")         .antMatchers("/index").access("hasRole('ADMIN') or hasRole('USER') ")                 .anyRequest().authenticated()         .and()         .formLogin()         .loginPage("/login")         .permitAll()         .and()         .logout()         .permitAll()         .and()         .csrf()         .disable();     }     @Override     protected void configure(AuthenticationManagerBuilder auth) throws Exception {        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder())        .withUser("user").password(new MyPasswordEncoder()        .encode("000")).roles("USER")        .and()        .withUser("admin").password(new MyPasswordEncoder()        .encode("123")).roles("ADMIN","USER");     } }

    最后达到admin账号能访问admin.html和index.html

    user只能访问index.html的操作

    看完上述内容,你们掌握如何使用Java SpringBoot安全框架去整合Spring Security的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI