Pm2 & nginx

layout: postread_time: trueshow_date: truetitle: ‘服务端登陆校验’date: 2021-07-19img: posts/20210705/4.jpgtags: [工程化]category: opinionauthor: 随步description: ‘服务端登陆校验’—

pm2进程守护,当机后自动重启,支持多进程,利用cpu多核的计算方式。日志记录,让问题可追溯nginx:反向代理image.png

pm2和nginx的配置pm2和nginx日志拆分

read more
登陆校验jwt

layout: postread_time: trueshow_date: truetitle: ‘服务端登陆校验’date: 2021-07-19img: posts/20210705/4.jpgtags: [工程化]category: opinionauthor: 随步description: ‘服务端登陆校验’—

登陆鉴权的方式

cookie和session

FE输入用户名密码发送登陆请求给BE,BE验证成功后,返回信息时set-cookie接下来所有的接口访问,都会自动带上cookie(浏览器默认行为,http协议的规定)

session的出现:cookie只存储userid,并且在网络中传输的。不会暴露用户具体信息,cookie信息是存储在浏览器端的用户信息存储在session(服务端)的session的缺点:占用服务端成本,有硬件成本多进程多服务器时,不好同步,一般使用第三方redis存储,成本高跨域传递cookie,需要特殊配置。(跨域传递默认不穿cookie,而session是严重依赖于cookie的)

JWT json web token

FE输入用户名密码发送登陆请求给BE,BE验证成功后返回token之后每次前端请求都在header带上tokenJWT优点:不占用服务器内存,多进程多服务器不受影响不受跨域显示

SSO和OAuth2

sso单点登陆oauth2第三方鉴权的常用方式(WX)

SSO的实现场景1、如果业务系统都在同一个主域下,比如aa.baidu.com和bb.baidu.com。直接把cookie domain设置为主域名2、不同域名,image.png

OAUTH2image.png

read more
Mysql mongodb redis

layout: postread_time: trueshow_date: truetitle: ‘组件库打包’date: 2021-07-19img: posts/20210705/4.jpgtags: [工程化]category: opinionauthor: 随步description: ‘组件库库打包’—Mysql Sequelizemysql是关系型数据库

Mongodb Mongoose

Redis多核CPU擅长处理多进程任务,所有web server也都是多进程。无论PM2,nginx还是其他。但进程之间有内存隔离,所以需要第三方缓存服务。类似于用户A第一次访问进程1,东西如果暂存在内存片段1中,第二次访问进入了进程2,由于内存隔离,进程2又需要在缓存一次。所以需要redis这样的第三方缓存服务去存储。image.png

read more