01 springboot+spring security

spring security

官网介绍
security是一款用于认证和授权模块的代码,对web应用提供防护支持。具体的请查看官网内容。

引入spring-security

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

引入后默认自动开发了安全验证
测试

package com.example.securitydemo01.controller;

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

/**
 * *@ClassName homeController
 * *@Author yyc
 * *@Date 2020/5/20 11:34
 **/
@RestController
public class homeController {

    @GetMapping("/")
    public String Index(){
        return "home";
    }
}

访问localhost:8081/ 弹出需要输入验证用户和密码
在这里插入图片描述
用户名默认是user
密码在控制台输出
在这里插入图片描述
输入用户和密码后,转到对应的url地址
在这里插入图片描述
可以看出,我们只要引入spring-security,就默认开启了表单验证。
在这里插入图片描述
如果使用简单的验证,需要手动配置

package com.example.securitydemo01.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * *@ClassName webSecurityConfig
 * *@Author yyc
 * *@Date 2020/5/20 14:37
 **/
@Configuration
public class webSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected  void configure(HttpSecurity http) throws  Exception{
        http.httpBasic()//简单认证
                .and()
                .authorizeRequests()//授权配置
                .anyRequest()//所有请求
                .authenticated();//都需要认证
    }
}

如果想要实现表单验证,需要将httpBasic改成formlogin

 @Override
    protected  void configure(HttpSecurity http) throws  Exception{
        http.formLogin()//表单认证
                .and()
                .authorizeRequests()//授权配置
                .anyRequest()//所有请求
                .authenticated();//都需要认证
    }

原理

表单验证流程
在这里插入图片描述

  1. 首先用户发送一个未授权的请求来获取一个未授权的资源。比如访问localhost:8082/
  2. spring-security的安全过滤拦截器检测到当前的请求是未授权的,然后抛出一个AccessDeniedException错误
  3. 只要检测到用户点击是未授权的,ExceptionTranslationFilter初始开始授权的程序,并发送一个login请求
  4. 浏览器响应login.html页面
  5. 用户输入用户名和密码登录到应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值