基于前后端分离的授权及认证(Shiro-SpringBoot-Vue)

Posted 你,好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于前后端分离的授权及认证(Shiro-SpringBoot-Vue)相关的知识,希望对你有一定的参考价值。

第一次写前后端分离的登录认证以及授权,写篇博客记录一下。

  • 登录认证
    • 前端,用户输入用户名密码,通过axios请求后端登录接口。
    • 后端通过SecurityUtils.getSubject()获取Subject对象,再根据传来的用户名、密码创建一个UsernamePasswordToken用于认证,调用subject.login(token)来进行登录认证。
    • 认证失败,则抛异常:UnknownAccountException:未知用户异常、CredentialsException 密码错误异常
    • 认证成功:则初始化Subject对象,方便用户获取当前主体信息,同时自定义RedisSessionDao会将当前session信息以用户名:sessionId为键存储到redis中。
    • 将sessionId当作token返回给前端。
    • 认证结束。
  • 授权
    • 前端,将token写入请求头,请求接口。
    • 后端,接收请求,shiro创建主体(Subject),委派sessionManager创建会话(Session)。在获取sessionId时,使用自定义sessionManager,将请求头中token赋值给sessionId。这样,前后端就通过token来维持了会话。
    • 第一次访问没有缓存,shiro会调用自定义Realm中的doGetAuthorizationInfo方法获取数据库中的权限信息生成AuthorizationInfo对象。并通过自定义RedisSessionDao将权限信息保存进redis,生成缓存。
    • 遍历AuthorizationInfo中的权限,看是否有所需权限。
    • 有所需权限,继续执行业务代码。
    • 没有所需权限,抛出AuthorizationException异常。
    • 授权结束。
      具体代码在GitHub

以上是关于基于前后端分离的授权及认证(Shiro-SpringBoot-Vue)的主要内容,如果未能解决你的问题,请参考以下文章

SpringSecurity+Jwt做前后端分离权限认证

谈谈前后端分离及认证选择

Sping Security前后端分离两种方案

前后端分离项目 — 基于SpringSecurity OAuth2.0用户认证

前后端分离,认证框架分析

SpringBoot2.0.3 + SpringSecurity5.0.6 + vue 前后端分离认证授权