登录权限控制

268 阅读2分钟

任务点

在电销项目开始分任务后,

会员、登录、权限、日程。

不知中就接收到了这样的任务,

但确实对登录这一块不是太熟悉。

可这又是很基础的一个东西,可要保证正确完善又是不易的。

登录

计划使用 Spring Security来完成登录方面的验证和授权操作。

Session 和 Token 认证对比

session认证方式

多数情况下我们都是通过 SessionID 来实现特定的用户,

SessionID 一般会选择存放在 Redis 中。

举个例子:用户成功登陆系统,然后返回给客户端具有 SessionID 的 Cookie,

当用户向后端发起请求的时候会把 SessionID 带上,

这样后端就知道身份状态了。 关于这种认证方式更详细的过程如下:

用户向服务器发送用户名和密码用于登陆系统。

服务器验证通过后,服务器为用户创建一个 Session,并将 Session信息存储 起来。

服务器向用户返回一个 SessionID,写入用户的 Cookie。

当用户保持登录状态时,Cookie 将与每个后续请求一起被发送出去。

服务器可以将存储在 Cookie 上的 Session ID 与存储在内存中或者数据库中的 Session

信息进行比较,以验证用户的身份,返回给用户客户端响应信息的时候会附带用户当前的状态。

Token 认证方式

在基于 Token 进行身份验证的的应用程序中, 服务器通过Payload、Header和一个密钥(secret)创建令牌(Token)并将 Token 发送给客户端,

客户端将 Token 保存在 Cookie 或者 localStorage 里面,以后客户端发出的所有请求都会携带这个令牌。

你可以把它放在 Cookie 里面自动发送,但是这样不能跨域,

所以更好的做法是放在 HTTP Header 的 Authorization字段中:Authorization: Bearer Token。

关于这种认证方式更详细的过程如下:

用户向服务器发送用户名和密码用于登陆系统。

身份验证服务响应并返回了签名的 JWT,上面包含了用户是谁的内容。

用户以后每次向后端发请求都在 Header 中带上 JWT。

服务端检查 JWT 并从中获取用户相关信息。

重要的点

认证过滤器

授权过滤器