01-SpringSecurity初见


今天开始来讲述一下SpringBoot2.0 + SpringSecurity的使用。注意哦,我这里用的SpringBoot2.x自带的SpringSecurity,所以在某些细节上跟其他教程、博客有所不同。


maven依赖:

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-securityartifactId>
dependency>

编写测试接口:

package com.eknown.controller;

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

/**
 * @author eknown
 * @version 1.0
 * @since 2019/5/29 13:44
 */
@RestController
public class TestController {

    @GetMapping(value = "")
    public String index() {
        return "welcome, this is the first page";
    }
}

启动项目,注意到控制台会出现如下输出:

Using generated security password: d50f96cf-37df-4061-8630-a803d6cb50e5

spring security默认用户名:user,密码就是上面这个。

下面在浏览器打开localhost:8068(8068是我在配置文件中写的port),回车,发现会自动重定向到如下界面:

01-SpringSecurity初见_第1张图片

这是因为Spring项目引入Spring-Security依赖时,会默认开启Spring-Security,在SpringBoot2.0之前,我们可以用如下配置来关闭Security:

security:
  basic:
    enabled: false

在SpringBoot2.0之后,这个配置就过时了,我们可以通过在代码中进行配置来关闭Spring-Security,比如在Application类上加上如下配置:

@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})

当然,这里不需要关闭了,不然下面就没法玩了。

输入user和上面的密码,点击Sign in,出现:

01-SpringSecurity初见_第2张图片

如果输错密码,会出现:

01-SpringSecurity初见_第3张图片


上述的登录页由Spring-Security默认提供,这一点在WebSecurityConfigurerAdapter类的configure(HttpSecurity http)方法中得到体现:

    protected void configure(HttpSecurity http) throws Exception {
        this.logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
        ((HttpSecurity)((HttpSecurity)((AuthorizedUrl)http.authorizeRequests().anyRequest()).authenticated().and()).formLogin().and()).httpBasic();
    }

我们可以通过重写这个方法,来自定义登录方式,比如基于自定义的登录页、自定义错误返回页等等。注意,更旧的SpringSecurity版本默认的是HttpBasic验证,而不是这里的formLogin对应的表单验证。

httpBasic验证方式的界面是这样的:

01-SpringSecurity初见_第4张图片


到这里,我们成功配置和启动了SpringBoot+SpringSecurity应用,但是我们还没有为我们的用户分配角色、权限等等。这些更加高阶的功能才是我们做统一登录、授权验证、权限管理需要的。

下一节将介绍如何对springsecurity进行自定义配置,自定义登录处理、登陆成功或失败逻辑等。

你可能感兴趣的:(security)