Java SpringBoot安全框架整合Spring Security详解

网友投稿 241 2022-12-08

Java SpringBoot安全框架整合Spring Security详解

目录1.工业级安全框架介绍2.建议搭建Spring Security环境2.1在pom.xml中添加相关依赖2.2创建Handler类2.3创建简单的html和配置相关thymeleaf的路径2.4最后再加个启动类,那么我们的整合测试就完成勒2.5成果展示 用户名默认user,密码则随机生成的这串数字3.进阶版使用3.1用户名和密码自定义3.2在config包下创建Encoder3.3赋予账号角色权限总结

1.工业级安全框架介绍

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

2.建议搭建Spring Security环境

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

xmlns:xsi="http://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">

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

hJZqX org.springframework.boot

spring-boot-starter-thymeleaf

xmlns:xsi="http://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">

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

hJZqX 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;

@Controller

public 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;

@SpringBootApplication

public 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;

@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的操作

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java异常的处理机制
下一篇:Java线程创建的四种方式总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~