图解Jwt和shiro认证方式的区别

图解Jwt和shiro认证方式的区别

Jwt的认证方式

用户进行登录中,访问微服务中Controller层的登录方法,若认证通过,生成Token(包含用户数据和权限),返回token信息到前端浏览器,然后,前端那边的代码会记录token,使得再去访问微服务的方法时,请求头都会包含token,然后,后端会解析token,校验token和操作权限,值得注意的是整个过程都不记录用户的任何数据,是一个无状态的服务

shiro的认证方式

用户登录后,交给后端自定义的Realm域,进行用户名和密码的认证比较,认证通过会产生一个以SessionId为key的用户安全数据,然后交给shiro的会话管理,将SessionId存入Redis服务,并将SessionId返回到前端,如果再访问其他后端的控制层方法时,请求头就会包含sessionId,然后再交给后端自定义的Realm域获取安全信息,再交给会话管理将传递过来SessionId与redis服务进行比较,返回自己构造的安全数据(安全数据一定要包含权限信息),因为需要对用户权限进行验证,如果访问请求没有携带sessionId,那么会产生一个新的sessionId,但还需要用户登录