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

最新文章

  1. 关于一些对map和整行读取文件操作
  2. iOS · UILabel加删除线
  3. Spring(十)Spring任务调度
  4. web错误
  5. Linux 下 apache 日志分析与状态查看[转]
  6. CComPtr用法
  7. 关于JSP post请求乱码的问题
  8. C# typeof() 和 GetType()区别
  9. iOS----------拨打电话的3种方式
  10. css定位的各属性占位问题
  11. [springBoot系列]--springBoot注解大全[转]
  12. linux grep (linux查找关键字在php出现的次数)
  13. Qt 中一些常用类中文说明
  14. Docker for Windows 代理设置(linux container)
  15. Linux学习笔记之CentOS7配置***SS
  16. Css之备忘录~
  17. HTML中显示的文字自动换行
  18. spring boot注解学习记
  19. C#中遇到的方法总结
  20. webstorm的debug模式

热门文章

  1. 《Java 编写基于 Netty 的 RPC 框架》
  2. 从零开始搭建Java开发环境第一篇:Java工程师必备软件大合集
  3. 基于Docker搭建Jumpserver堡垒机操作实践
  4. 转载-lambda sort
  5. Jedis操作Redis--List类型
  6. C++中的I/O输入输出问题
  7. python接口自动化测试之requests库详解
  8. P2486 [SDOI2011]染色 维护区间块数 树链剖分
  9. codeforces 808 E. Selling Souvenirs (dp+二分+思维)
  10. poj 2115 求线性同余方程 C Looooops(好理解欧几里德扩展定理怎么应用)