后端如何实现登陆功能

登陆功能是一个非常常见的功能。它有一套统一的规范流程,我们只需要遵循这一套流程就可以了。

实现登陆我们就必须使用到 cookie, 使用 cookie 来保存用户的信息。在请求某个域的时候,http 会自动将这个域的 cookie 放到请求头当中。所以我们只需要在登陆用户成功后,将必要的信息通过设置 Set-Cookie 这个响应头返回给客户端。浏览器会自动将该头的信息存储到当前域名下的 cookie 中,下次用户请求的时候,http 协议会自动将该 cookie 带上。我们就可以在每次的请求的请求头当中拿到该 cookie, 然后去判断用户是否登陆,进而根据用户是否登陆进行相应的处理。

一般来说我们不会在用户登陆后将用户的用户名和密码设置到 cookie 中,从而直接在请求头拿到用户名和密码,然后去判断用户是否登陆,这些信息过于敏感,暴露出来十分危险。正确的做法应该是不管用户是否登陆,都应该通过 cookie 给用户返回一个标志(通常也称为userId 或者 token 等),并需要设置其过期时间、httpOnlypath等。每次用户请求时,都根据这个标志在服务端去取根据这个标志存在服务端的用户的信息。

上面说到的标志,以及标志在服务端存储的信息,通常将其称为 session , 可以在 session 当中以该标志的值为键,从而可以将用户的信息,如是否登陆,用户偏好等存储到该值当中。由于读取和写入 session 通常很频繁,对读写速度要求较高,而且由于存储的信息量一般不是很大,所以对于存储空间要求不是很大,所以可以放在内存当中。Redis便是为了这个而生,它将数据存储在内存当中,由于在内存中,所以一断电数据就会没有了,但是这些数据就算没有了也不重要,用户重新登陆一次就好了,所以对于 session 的存储,一般使用Redis

你可能感兴趣的:(node)