千家信息网

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

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,如何使用Java SpringBoot安全框架去整合Spring Security,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.工业
千家信息网最后更新 2025年01月18日如何使用Java SpringBoot安全框架去整合Spring Security

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

    1.工业级安全框架介绍

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

    2.建议搭建Spring Security环境

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

        4.0.0    org.example    springsecurityReview    1.0-SNAPSHOT            spring-boot-dependencies        org.springframework.boot        2.5.4                            org.springframework.boot            spring-boot-starter-web                            org.springframework.boot            spring-boot-starter-security                            org.springframework.boot            spring-boot-starter-thymeleaf            

    2.2创建Handler类

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

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

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

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

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

    3.进阶版使用

    3.1用户名和密码自定义

    3.2在config包下创建Encoder

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

    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;@Configurationpublic 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的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

    0