Spring Security API 封装了一套认证接口,如果没有特殊要求,只需要建一个表,写几行代码就完成了一个登录验证。
这是一个简单的例子,在 Spring Boot 中使用 Spring Security API 联合 SQL Server 验证用户登录。
使用 Thymeleaf 模板创建一个自定义登录页面 /login
除 /hash/* 以外的页面都需要受登录保护
使用 SQL Server 数据库中 Users 表里的用户登录
在 SQL Server 中创建一个表。
CREATE TABLE [dbo].[Users] (
[id] int IDENTITY(1,1) NOT NULL,
[username] varchar(30) NOT NULL,
[password] varchar(60) NOT NULL,
[role] varchar(45) NOT NULL,
[enabled] int DEFAULT NULL NULL
)
password
长度是 varchar(60) 是因为打算直接使用 Spring 中封装好的 BCrypt
哈希算法,这个算法 Hash 过的密码长度为 60 个字符。
添加一条数据
insert into users(username,password,role,enabled) values ('hooyes','$2a$10$TLMsNPhpOyLKYlkMVdo0SOs/7JQ2lp0KJu2XNsCm8QPzlqaTk7fCq','ROLE_USER',1)
以上数据表示用户名是 hooyes
密码是 hooyes.net
如何生成密码,下文会提到,其实就是 new BCryptPasswordEncoder().encode(password)
本文介绍在 Spring Boot 项目中,如何使用 JdbcTemplate 读取 Microsoft SQL Server 中的数据,实现一个 Restful Web Services。
实现一个 Restful Web Services ,请求后输出从 SQL Server 数据库 Products 表获取到的某些数据。例如,
http://localhost:7425/one
输出纯文本:星巴克咖啡http://localhost:7425/getById/2
根据指定 id 输出 JSON : { “id” : 2 , “name” : “蓝山咖啡” }http://localhost:7425/getAll
输出 JSON List:
[{ “id” : 1 , “name” : “星巴克咖啡” },{ “id” : 2 , “name” : “蓝山咖啡” },{ “id” : 3 , “name” : “猫屎咖啡” }]
根据 Restful 风格,采取的是 getById/2
这种的地址方式获取参数,而不是传统的 getById?id=2
问号加参数的方式。在 Spring 中采用 @PathVariable
对参数进行标记。
使用 Spring Tool Suite 创建一个 Spring Starter Project ,添加 HelloHooyes.java,Products.java 文件 ,创建好的目录必要的结构:
架构师确实是个神奇的职位,在小公司,你可能什么都需要做,使用前端到后端各种技术,这时常被人称为全栈工程师,我倒觉得“全干工程师”更贴切。
在大厂,你可能只负责某个平台的架构或中间件的架构,这时候就是指某一类的架构师。
作为一名对标阿里P7的架构师,我眼中的Java架构师是什么样的呢?