SpringBootSecurity学习(01)网页版登录入门介绍
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)网页版登录入门介绍的更多相关文章
- SpringBootSecurity学习(06)网页版登录方法级别的权限
用户授权 前面讨论过,Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.前面介绍了登录,下面简单 ...
- SpringBootSecurity学习(08)网页版登录整合MyBatis
创建数据库 前面介绍了springboot-security整合jdbc从数据库中查询用户的方式,适用性有限,下面介绍最常用的整合MyBatis,这种在开发和生产环境中是最常用,也是最实用的.首先需要 ...
- SpringBootSecurity学习(07)网页版登录整合JDBC
数据库中定义用户 前面我们定义用户是在配置文件和代码中定义死的默认用户,一般在开发中是不会这样做的,我们的用户都是来自我们的用户表,存储在数据库中.操作数据库的技术有很多,spring securit ...
- SpringBootSecurity学习(03)网页版登录添加自定义登录页面
自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用 ...
- SpringBootSecurity学习(04)网页版登录其它授权和登录处理
其它授权配置 security的配置类中,对所有路径进行了统一授权配置.但是有的内容我们也需要让未登录游客有权限访问,比如js,css等静态文件,还有一些宣传页面等等.这些路径可以单独配置: 我们来试 ...
- SpringBootSecurity学习(05)网页版登录内存中配置默认用户
默认用户 前面的例子中我们使用的都是配置文件中配置好的默认用户: 除了可以配置账号密码,还可以在配置文件中配置角色: 这个角色是后面实现权限过滤的重要内容,后面会重点讨论. 在内存中配置默认用户 这样 ...
- SpringBootSecurity学习(09)网页版登录配置Session共享
场景 当后台项目由部署在一台改为部署在多台以后,解决session共享问题最常用的办法就是把session存储在redis等缓存中.关于session和cookie概念这里就不再赘述了,在spring ...
- SpringBootSecurity学习(10)网页版登录之记住我功能
场景 很多登录都有记住我这个功能,在用户登陆一次以后,系统会记住用户一段时间,在这段时间,用户不用反复登陆就可以使用我们的系统.记住用户功能的基本原理如下图: 用户登录的时候,请求发送给过滤器User ...
- SpringBootSecurity学习(11)网页版登录之URL动态权限
动态权限 前面讨论用户登录认证的时候,根据用户名查询用户会将用户拥有的角色一起查询出来,自动实现判断当前登录用户拥有哪些角色.可以说用户与角色之间的动态配置和判断security做的非常不错.不过在配 ...
随机推荐
- ASP.NET Core 2.2 : 二十六. 应用JWT进行用户认证
本文将通过实际的例子来演示如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新方案(ASP.NET Core 系列目录) 一.什么是JWT? JWT(json web token ...
- 单元测试之NUnit二
NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 本文介绍常用的NUni ...
- map()函数映射
map()函数(映射) pattern = "abba" str = "dog cat cat dog" res=str.split() print(list( ...
- Python实现 下载IJCAI会议所有论文
import requests import threading def get_file_content(num): savepath = '%04d.pdf' % (num) suburl = ' ...
- HTML(二)属性,标题,段落,文本格式化
HTML属性 HTML属性 HTML 元素可以设置属性 属性可以在元素中添加附加信息 属性一般描述于开始标签 属性总是以名称/值对的形式出现,比如:name="value" 常用属 ...
- SDU暑期集训排位(8)
A. A Giveaway 签到 B. Game of XOR 做法 dp[G][L][R]表示在倒数第G代,左边的数是L,右边的数是R,下面共有多少个0和1 区间和转换成两次前缀和和一次单点查询 利 ...
- 2018年全国多校算法寒假训练营练习比赛(第五场)H Tree Recovery
Tree Recovery 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 链接:https://w ...
- Codeforces 729C Road to Cinema(二分)
题目链接 http://codeforces.com/problemset/problem/729/C 题意:n个价格c[i],油量v[i]的汽车,求最便宜的一辆使得能在t时间内到达s,路途中有k个位 ...
- UVA 494 Kindergarten Counting Game map
Everybody sit down in a circle. Ok. Listen to me carefully.“Woooooo, you scwewy wabbit!”Now, could s ...
- 项目案例模板之jdbc两种连接方式
项目案例模板之jdbc两种连接方式 第一种连接方式 JDBCUtils.java package jdbc; import org.junit.jupiter.api.Test; import ...