Spring Security学习笔记(一)

作者:mySoul 时间:2023-09-10 06:25:09 

介绍

这里学习SpringSecurity,对SpringSecurity进行学习。

基本用法

添加依赖


<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
</dependency>

添加接口


package com.example.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class Test {
 @RequestMapping("/test")
 public String test(){
   return "test";
 }
}

启动项目

可以看到日志中,已经有了密码

Spring Security学习笔记(一)

访问接口,此时已经有了登录页面

Spring Security学习笔记(一)

输入用户名和密码

用户名: user
密码 984cccf2-ba82-468e-a404-7d32123d0f9c

Spring Security学习笔记(一)

此时已经登录成功

配置用户名和密码

在配置文件中,进行配置

spring:
security:
user:
name: ming
password: 123456
roles: admin

输入用户名和密码,可以正常登录

基于内存的认证

需要自定义类继承 WebSecurityConfigurerAdapter
实现自定义的配置
这里基于内存的配置,如下


package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {
 @Bean
 PasswordEncoder passwordEncoder(){
   return NoOpPasswordEncoder.getInstance();
 }

@Override
 protected void configure(AuthenticationManagerBuilder auth) throws Exception {
   auth.inMemoryAuthentication()
       .withUser("admin").password("123").roles("admin");
 }
}

这里基于内存的配置

HttpSecurity

这里对某些方法进行拦截


package com.ming.demo.interceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
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;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 //基于内存的用户存储
 @Override
 public void configure(AuthenticationManagerBuilder auth) throws Exception {
   auth.inMemoryAuthentication()
       .withUser("itguang").password("123456").roles("USER").and()
       .withUser("admin").password("{noop}" + "123456").roles("ADMIN");
 }

//请求拦截
 @Override
 protected void configure(HttpSecurity http) throws Exception {
   http.authorizeRequests()
       .anyRequest().permitAll()
       .and()
       .formLogin()
       .permitAll()
       .and()
       .logout()
       .permitAll();
 }

}

这里成功完成了post请求进行登录验证。

来源:https://www.iming.info/2020/06/15/%e5%ad%a6%e4%b9%a0%e5%ad%a6%e4%b9%a0springsecurity/

标签:Spring,Security,笔记,Java
0
投稿

猜你喜欢

  • 关于Java中@SuppressWarnings的正确使用方法

    2023-07-22 17:17:58
  • Spring Boot2深入分析解决java.lang.ArrayStoreException异常

    2021-10-20 12:10:24
  • Java8通过Function获取字段名的步骤

    2022-07-14 14:06:23
  • Android View如何测量

    2023-12-06 14:53:53
  • Android实现密码明密文切换(小眼睛)

    2023-07-01 15:42:18
  • Flutter 构建一个常用的页面框架

    2022-10-02 02:54:19
  • Java杂谈之重复代码是什么

    2022-06-08 15:07:24
  • springboot中使用rabbitt的详细方法

    2023-06-17 09:57:43
  • Java中使用内存映射实现大文件上传实例

    2022-01-16 05:02:16
  • Java和Dubbo的SPI机制原理解析

    2023-01-29 05:21:45
  • spring boot如何使用AOP统一处理web请求

    2023-05-16 14:15:11
  • Mac Android Studio 3.0 Terminal 中文乱码问题处理

    2023-08-12 13:42:09
  • Java之策略模式比较器案例讲解

    2021-12-25 22:24:32
  • C# 标准事件流实例代码

    2022-06-21 16:29:14
  • 详解C#中的委托

    2022-05-10 06:01:43
  • springMVC前台传数组类型,后台用list类型接收实例代码

    2022-12-25 16:39:40
  • Android自定义EditText实现淘宝登录功能

    2023-04-20 01:33:04
  • 浅谈Android Studio 3.0 的一些小变化

    2022-12-23 10:27:56
  • Spring boot配置绑定和配置属性校验的方式详解

    2022-04-21 03:06:06
  • SpringBoot自动配置原理详解

    2023-08-19 09:25:55
  • asp之家 软件编程 m.aspxhome.com