1. SpringSecurity 快速入门与简单使用

Spring 官网对 SpringSecurity 的简介

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.

翻译过来的大概意思就是 SpringSecurity 是一个强大并且支持高自定义性的认证和授权框架

SpringSecurity 是什么?
  • SpringSecurity 是一个 Spring 团队开发基于 Spring 的 认证授权 框架
  • 特点是 功能强大支持高自定义性
为什么要使用 SpringSecurity?
  • 为了解决系统中 认证授权 的需求
  • 对比自己手动实现的认证、授权框架,SpringSecurity 有以下优点
    • 比较成熟
    • 对于基于 Spring 开发的项目,集成快速
    • 无缝对接 Spring 平台
    • 可扩展性高
    • 功能强大
快速入门
  • 环境准备

    • IDEA
    • jdk 1.8
    • maven 3.5 或 IDEA 自带 Maven 3
  • 步骤

    • 使用 IDEA 创建一个 SpringBoot 项目,在新建项目选择 Dependeces 勾选 Security,或者创建项目后再 pom 文件中手动添加如下依赖。PS: 本次 SpringSecurity 文章中 SpringBoot 版本为 1.5.19.RELEASE,SpringSecurity 版本为 4.2.11.RELEASE

      <!-- 添加 SpringSecurity 依赖,当前的 SpringBoot 版本使用的 1.5.19,对应的 SpringSecurity 版本为 4.2.11 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      
    • 创建一个 Restful 接口,用来做之后访问的目标。

      /**
       * @author: hblolj
       * @Date: 2019/3/13 16:06
       * @Description:
       * @Version:
       **/
      @RestController
      public class TestController {
      
          @RequestMapping("/hello")
          public String hello(){
              return "Hello Spring Security";
          }
      }
      
    • 启动应用,成功启动后,观察控制台,会发现如下日志输出
      输出日志

      注意日志中下面这一行,后面会用到

      Using default security password: ce87e8ab-8233-447b-82d8-90268d891615
      
    • 打开我们的浏览器,在地址栏输入接口地址,访问我们的接口 http://localhost:8080/security/hello (8080 端口与 security 路径是我通过 yml 配置文件自己设置的)。按下回车键,会弹出如下对话框:

      1552465921774

      该对话框需要我们输入用户名与密码进行登录,从这里可以分析出,我们上面定义的接口已经被保护起来了,访问必要要先认证,而认证的方式是通过填写这个对话框。

      这里用户名默认为 user,密码则为上面我们叫大家留意的哪一行日志 (ce87e8ab-8233-447b-82d8-90268d891615),这里说明一下,这个密码是随机的,每次启动服务,都会生成一个随机的密码。

    • 按照说明,我们键入用户名和密码,点击登录按钮,就可以访问到我们上面自定义的接口了。

      1552466161653

  • 总结:按照上述步骤,我们就在一个基于 SpringBoot 的项目中引入了 SpringSecurity 框架,但是显而易见的,我们发现这种默认的实现是不能够满足我们的日常开发需求的,我们将可能会用的需求列一下

    • 用户登录不可能以这种弹框形式去登录,一般网页都有自己的登录页面(自定义登录页面)
    • 用户名、密码应该是从数据库中读取,而不是默认和随机的(自定义认证逻辑)
    • 并不是对所有的资源或接口都需要认证(设置资源白名单)

    所以在下一篇文章中,我们会实现一个自定义的表单登录示例,To Be Continue…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章