Spring Security 入门篇

释放双眼,带上耳机,听听看~!

前篇  

我们在做日常开发时,安全性是我们必须要考虑的事情。最简单的安全校验如用户登陆,权限验证等。要想实现这些功能说起来容易,但如果要真正开发的的话,则会很复杂。因为这些功能尝尝会对系统有相应的侵赖。Spring为了方便我们我们使用及复用上述功能。于是提供了Spring Security框架。通过Spring Security框架我们可以很容易的在项目中使用以下功能:

  • 认证:校验请求是否正确。
  • 授权:授予相应的权限。
  • 登陆:支持密码、微信、微博、QQ、手机等等方式登陆。
  • 权限:通过不同的请求,访问不同的权限。

创建SpringBoot项目

因为我们已经知道了怎么创建SpringBoot框架,所以在SpringBoot中使用Spring Security功能非常的简单,我们只要添加相应的依赖的和设置相关的配置即可。为了方便验证Spring Security的功能,我们先创建一个SpringBoot项目,然后在添加相应的依赖。因为之前已经介绍过怎么搭建SpringBoot的项目了,所以在这里就不详细介绍了。我们直接看项目代码。

Controller代码:

@RestController
public class HelloWorldController {
    @GetMapping("/helloworld")
    public Object helloworld() {
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("data", "Hello World Spring Security");
        return result;
    }
}

我们只创建了一个简单的Controller,下面我们访问一下这个Controller,看看接口是否能成功的返回数据。

接口地址:

http://127.0.0.1:8088/security/helloworld

返回结果:

title

添加pring Security框架依赖

我们看成功的返回了我们自定义Controller中的接口信息。这比较简单,因为这就是SpringBoot框架的功能。下面我们只做一处改动,来看一下使用Spring Security框架竟然如些简单。具体修改如下:

在项目的pom.xml文件中添加以下依赖:

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

嗯,就这样。我就使用了Spring Security框架的功能。我们现在直接重新启动项目即可。然后我们在访问一下上面我们测试的好的接口,在看一下,接口返回的结果。

接口地址:

http://127.0.0.1:8088/security/helloworld

返回结果:

title

Spring Security框架的账号及密码

咦?怎么会是这个样子呢?我们明明访问的是接口啊,为什么直接跳转到登陆呢?这是什么原因呢?这是就是Spring Security框架的功能,Spring Security框架默认会对所有的接口请求进行验证。只有当我们输入完正确的账号和密码后,才可以访问接口。Spring Security框架的默认账号为:user,密码是启动项目时随机生成的。也就是启动日志中输出的:

Using generated security password: 8e4ec9c8-e08b-48ec-bcde-243af6b9cb59

当我们输入完上述的账号和密码后,就可以继续访问接口了。

title

自定义账号和密码  

这就是Spring Security框架的简单使用。但上述的账号和密码可能不太方便,因为密码是每次启动项目都随机生成的,那有没有办法指定Spring Security框架的账号和密码呢?答案一定是肯定的。具体配置如下:

application.yml:

spring:
  security:
    user:
      name: jilinwula
      password: jilinwula.com

下面我们启动项目,在访问上述接口。在访问接口之前,我们是不需要清除缓存的,因为Spring Security框架会在我们访问接口时在次验证账号和密码是否正确,如果正确则不会提示我们输入账号和密码了,如果错误则会再次跳转到登陆地址,让我们输入账号和密码。下面我们还是输入之前密码来看一下效果。

title

这时Spring Security框架会提示我们密码错误,下面我们输入正确的账号和密码,来看一下,接口是否成功的返回。

title

关闭Spring Security框架的验证

在实际的项目开发中,为了方便接口的调用与调试,通常会先关闭Spring Security框架的验证。下面我们看一下具体的配置。

我们在启动类上添加@EnableAutoConfiguration注解。具体代码如下:

package com.jilinwula.security;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
@SpringBootApplication
public class SpringSecurityHelloworldApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringSecurityHelloworldApplication.class, args);
    }

}

这样当我们在访问上述接口时,就不会提示我们输入账号和密码了(在请求之前,要清理一下缓存)。以上内容就是本篇的全部内容,如有不正确的地方,欢迎留言,谢谢。


源码地址

https://github.com/jilinwula/spring-security-helloworld.git

个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索