Web应用安全管理

Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理。权限管理的设计一般使用角色来管理,即给一个用户赋予哪些角色,这个用户就具有哪些权限。

Spring框架体系中,经典的安全体系框架是Security。关于系统的安全管理及各种设计,Spring Security已经大体上都实现了,只需要一些配置和引用就能够正常使用。SpringBoot使用Security更加的简单,因为SpringBoot本身的简单配置使用加上Security的功能丰富全面,可用快速帮助我们构建完善的登陆认证服务。

关于Security,SpringBoot本身有spring-boot-starter-security依赖组件,Spring Cloud微服务全家桶中也有spring-cloud-starter-security依赖组件,并且spring-cloud-starter-security中也包含了spring-boot-starter-security,下面的学习中,会先使spring-boot-starter-security,然后再spring-cloud-starter-security学习安全管理的功能,从SpringBoot单体的登陆注册和权限管理,到Spring Cloud微服务中构建认证和授权服务,都会一一接触到。

关于版本的问题,我从SpringBoot1.3.x版的使用到2.1.x的使用,Security的配置也经历了不小的变化,最准确的配置建议去官网文档学习。
下面的学习中,将使用2.1.5版本,官方文档地址是: https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/ 。 Security的源码非常复杂,因此我们后面再讨论深层次的东西,现在来用实例进行入门学习。

入门例子

先来看一个入门例子,springboot项目结构我们都很熟悉,先来看依赖:

依赖很简单,除了一个web组件和thymeleaf视图组件,就是一个security。接下来看一下启动类:

可以看到启动类没有任何特殊的配置。至于配置文件,我们简单的配置一下端口,其它不做任何配置:

这样一个简单的入门例子就完成了,现在来启动项目,启动日志很短,可以看到有一行特殊的日志:

这是我们加入了security组件的依赖之后,引入了security的默认配置,此时就有了一个简单的登录功能,打印出的一行是默认密码的信息,这个密码是现在没有任何代码和配置的状态下每次启动随机生成的,security不仅会生成一个默认密码,依赖组件中还有一个默认的登陆链接/login,还有一个默认的用户名 user,而且在springboot2.1.x版本中,这个/login有一个非常不错的默认登录页面,下面进行测试:

用户名输入user,密码输入日志中打印出的随机密码,登录成功后,就会跳转到默认地址,默认成功的地址就是登录地址去掉/login,

现在没有定义任何链接匹配这个地址,我们来定义一个简单的页面,在resource下面,新建一个templates文件夹,在templates下面新建一个主页 home.html,内容如下:

然后定义一个controller跳转到这个页面:

这样我们登陆成功后,就能自动跳转到这个页面:

这样,一个最简单的登录流程就完成了,我们几乎没有做任何配置,只是引入了一个依赖而已。下面我们给security配置一个默认用户名密码,这样就不用每次启动都用随机密码,直接在springboot的默认配置文件中配置:

这样等登陆就可以使用 admin/admin登陆了。

代码地址 :https://gitee.com/blueses/spring-boot-security 01

SpringBootSecurity学习(01)网页版登录入门介绍的更多相关文章

  1. SpringBootSecurity学习(06)网页版登录方法级别的权限

    用户授权 前面讨论过,Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.前面介绍了登录,下面简单 ...

  2. SpringBootSecurity学习(08)网页版登录整合MyBatis

    创建数据库 前面介绍了springboot-security整合jdbc从数据库中查询用户的方式,适用性有限,下面介绍最常用的整合MyBatis,这种在开发和生产环境中是最常用,也是最实用的.首先需要 ...

  3. SpringBootSecurity学习(07)网页版登录整合JDBC

    数据库中定义用户 前面我们定义用户是在配置文件和代码中定义死的默认用户,一般在开发中是不会这样做的,我们的用户都是来自我们的用户表,存储在数据库中.操作数据库的技术有很多,spring securit ...

  4. SpringBootSecurity学习(03)网页版登录添加自定义登录页面

    自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用 ...

  5. SpringBootSecurity学习(04)网页版登录其它授权和登录处理

    其它授权配置 security的配置类中,对所有路径进行了统一授权配置.但是有的内容我们也需要让未登录游客有权限访问,比如js,css等静态文件,还有一些宣传页面等等.这些路径可以单独配置: 我们来试 ...

  6. SpringBootSecurity学习(05)网页版登录内存中配置默认用户

    默认用户 前面的例子中我们使用的都是配置文件中配置好的默认用户: 除了可以配置账号密码,还可以在配置文件中配置角色: 这个角色是后面实现权限过滤的重要内容,后面会重点讨论. 在内存中配置默认用户 这样 ...

  7. SpringBootSecurity学习(09)网页版登录配置Session共享

    场景 当后台项目由部署在一台改为部署在多台以后,解决session共享问题最常用的办法就是把session存储在redis等缓存中.关于session和cookie概念这里就不再赘述了,在spring ...

  8. SpringBootSecurity学习(10)网页版登录之记住我功能

    场景 很多登录都有记住我这个功能,在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统.记住用户功能的基本原理如下图: 用户登录的时候,请求发送给过滤器User ...

  9. SpringBootSecurity学习(11)网页版登录之URL动态权限

    动态权限 前面讨论用户登录认证的时候,根据用户名查询用户会将用户拥有的角色一起查询出来,自动实现判断当前登录用户拥有哪些角色.可以说用户与角色之间的动态配置和判断security做的非常不错.不过在配 ...

随机推荐

  1. 梳理commons-lang工具包

    目录 概述 builder包 NumberUtils 转换 String 类型为原始类型 截取小数位数 创建包装类型 最大值 | 最小值 关于数字的检查 mutable包 relect包 Constr ...

  2. python 17 内置模块

    目录 1. 序列化模块 1.1 json 模块 1.2 pickle 模块 2. os 模块 3. sys 模块 4. hashlib 加密.摘要 4.1 加密 4.2 加盐 4.3 文件一致性校验 ...

  3. mybatis 源码分析(六)StatementHandler 主体结构分析

    分析到这里的时候,mybatis 初始化.接口.事务.缓存等主要功能都已经讲完了,现在就还剩下 StatementHandler 这个真正干活的家伙没有分析了:所以接下来的博客内容主要和数据库的关系比 ...

  4. vscode同步插件 sync(gist,token)

    网上很多同步教程,按照教程操作upload时一直报错:sync:invalid gist ID 查找问题很久才知道 gist和token是两个东西.下面重新梳理下: 一.下载安装插件 Setting ...

  5. HDU 4280 Island Transport(无向图最大流)

    HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...

  6. Windows CVE-2019-0708 远程桌面代码执行漏洞复现

    Windows CVE-2019-0708 远程桌面代码执行漏洞复现 一.漏洞说明 2019年5月15日微软发布安全补丁修复了CVE编号为CVE-2019-0708的Windows远程桌面服务(RDP ...

  7. 高可用的K8S集群部署方案

    涉及到的内容 LVS HAProxy Harbor etcd Kubernetes (Master Worker) 整体拓补图 以上是最小生产可用的整体拓补图(相关节点根据需要进行增加,但不能减少) ...

  8. Nginx简介及配置文件详解

    http://blog.csdn.net/hzsunshine/article/details/63687054 一 Nginx简介    Nginx是一款开源代码的高性能HTTP服务器和反向代理服务 ...

  9. Asterisk13.23.1如何增加G723编码和G729编码

    文章主要将如何配置Asterisk G729的编码和G723的编码问题 今天在配置语音电话过程中踩到一个坑,就是在对接线路过程中出现了一个报错,在传到对方线路过程中出现无法转码从而导致报错. 查看了下 ...

  10. Vue兄弟组件通信

    Vue兄弟组件通信之借助中央事件总线 下载链接:https://www.yinxiangit.com 其实要实现兄弟组件通信,就算是通过父子组件通信的方式也是可以达到的,如 子 ——>父——&g ...