这几天完善了发布博客,完成了收藏博客的功能
博客项目
一共有三种身份:
访客(未登录),用户,管理员。
其中管理员拥有的功能最多,其次是用户,然后是访客。
从功能上看:
访客
- 可以分页查看所有的博客
- 可以查看最多的标签分类和所有的标签
- 可以根据时间查找博客列表
- 可以用关键字全局搜索博客
- 可以快速查看最新的推荐博客
- 可以查看单个博客内容
- 可以查看用户的基本信息(浏览量,博客数,粉丝数)
用户
- 管理博客
- 从注册登录页面进入首页
- 可以编辑发布文章(设置标签,分类,是否原创)
- 可以修改已发布博客
- 可以删除博客
- 博客分类和标签
- 新增、修改分类/标签
- 删除分类/标签(如果目录下对应文章只有一个分类,则移入默认分类)
- 根据名称查询分类/标签
- 个人信息方面
- 可以修改自己的个人信息
管理员
- 查看发布未审核的文章
- 可以通过未审核的文章
JWT
令牌组成
- 标头(Header)
- 有效载荷(Payload)
- 签名(Signature)
格式通常是:Header.Payload.Signature
Header
标头通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法,例如HMSC SHA256或RSA。它会使用Base64编码组成JWT结构的第一部分
注意:Base64也是一种编码,它可以被翻译回原来的样子,不是一种加密过程
{
"alg":"HS256",
"typ":"JWT"
}
Payload
令牌的第二部分是有效负载,其中包含声明,声明是有关实体(通常是用户)和其他数据的声明,同样也会使用Base64编码,是JWT的第二部分
{
"sub":"1234560",
"name":"John Doe",
"admin":true
}
Signature
Signature需要使用编码后的Header和Payload以及我们提供的一个密钥,然后使用header中指定的签名算法(HS256)进行签名。签名的作用是保证JWT没有被篡改过
签名的目的:实际上是对头部以及负载内容进行签名,防止内容被篡改,如果有人对头部以及负载的内容解码之后进行篡改,再进行编码,最后加上签名组合形成新的JWT的话,那么服务器回判断出新的头部和负载形成的签名和JWT附带上的签名是不一样的
HMACSHA256(
base64enc(header)+'.'+,
base64enc(payload)
,secretKey
)
放在一起之后,是由三个点分隔的Base64-URL字符串,可以在HTML环境中传递这些字符串,与基于XML的标准相比,它更紧凑