Blog System | Note-5
@2018年7月31日 10:44:13 @Knowledge From Imooc
权限管理
功能:
建立角色与资源的关系、CSRF问题、启用方法级别的安全设置、使用BCrypt加密、登录、记住我
需求:
角色授权、权限设置
API:
请求方式 | 路径 | 参数 |
---|---|---|
GET | /login | 获取登录页面 |
POST | /login | 登录(username,password,remember-me) |
应用@
1 | // 改造SecurityConfig |
CSRF防护(详见附录)
CSRF:跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用
1 | <!-- CSRF --> |
防护:“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的
1 | // 获取 CSRF Token |
博客管理
需求:
发表、编辑、删除、分类、标签、上传图片、模糊查询、最新、最热、阅读量统计
功能:
用户主页、个人资料设置、头像更换
文件服务器(图片、文件等)
MongoDB File Server
基于 MongoDB 的文件服务器;MongoDB File Server 致力于小型文件的存储,比如图片、文档等;由于MongoDB 支持多种数据格式的存储,对于二进制的存储自然也是不话下,可以方便用于存储文件;
API:
请求方式 | 路径 | 参数 |
---|---|---|
GET | /u/{username} | 具体某个用户主页(username) |
GET | /u/{username}/profile | 获取个人设置页面(username) |
POST | /u/{username}/profile | 保存个人设置(username,User) |
GET | /u/{username}/avatar | 获取个人头像(username) |
POST | /u/{username}/avatar | 保存个人头像(username,User) |
GET | /u/{username}/blogs | 查询用户博客(order,catalog,keyword,async,pageIndex,pageSize) |
GET | /u/{username}/blogs/edit | 获取新增博客的页面(username) |
POST | /u/{username}/blogs/edit | 保存博客的页面(username,Blog) |
GET | /u/{username}/blogs/edit/{id} | 编辑博客的页面(username,id) |
DELETE | /u/{username}/blogs/edit/{id} | 删除博客(username,id) |
应用@
1 | // 添加 Markdown parser 依赖 |
1 | // Blog.java |
附录
CSRF防护
MongoDB File Server
@2018年7月31日 14:40:19