springsecurity的认证授权有两种方式:基于session和基于token。由于token的使用会比较多,下面讲token的这种方式。
整个大概的流程是这样的:
1.用户访问服务器进行登录,服务器返回登录页面给用户
2.用户填写用户名和密码,并提交给服务器
3.服务器收到后,由springsecurity来进行认证校验,主要是查询数据库用户名和密码,判断是否是合法的用户,如果是,则认证成功,并且从数据库中查出该用户的权限列表
4.将用户名和权限列表保存到redis中,用户名为key,权限列表为value;通常每个权限用其code来表示,在权限表会有一个code字段,到时候redis存的权限列表,其实就是一系列的code值。
5.此时根据用户名等信息生成token,把token保存在cookie中并返回给用户;此时用户就已经认证成功了,接下来就是授权了
6.当用户再次访问时,从cookie中取出token信息,放到请求中的header请求头,随着请求发送给服务器
7.服务器从header头中拿到token,并解析token拿到用户名
8.查询redis,根据用户名,查询该用户的权限列表
9.springsecurity根据权限列表,为用户此请求赋予相应的权限
10.用户请求进行相应的操作
大概流程是这样的,我们可以知道,实际上权限列表是保存在数据库中的,但是springsecurity会从redis取用户的权限,再赋予用户该请求的权限