今天来解析一下若依登录时的总体流程(我是渣渣,找了大佬的博客学习才大致搞懂)
这里先贴上参考学习的链接,以我的水平看来是很通俗易懂的:【精选】若依框架后端登录流程_若依框架登录流程_@红@旗下的小兵的博客-CSDN博客
验证码:
首先用户进入登录页,需要获取验证码,此时向后端/captchalmage接口请求获取验证码
之后进入下一个流程
登录
此时,用户在网页输入账号密码等信息后点击登录,前端将数据作为参数传给后端,之后后端判断验证码正误、用户是否存在、用户权限等,并记录用户的信息,更新用户登录的IP、时间等,之后生成token,返回给前端。
详细流程
登录接口 /login
这里用到的login方法如下:
之后会对传回的账号和密码进行验证
图中所调用的UserDetailServiceImpl.loadUserByUsername(String username) 方法如下:
之后根据username查询数据库,判断用户状态:
用户存在,则调用createLoginUser() 方法来返回LoginUser类:
上图用到的getMenuPermission()方法:
之后查询用户信息,填充入LoginUser中:
之后,打印日志,更新用户登录的IP、日期:
最后生成token,返回给前端
获取用户信息
这里会对角色和权限进行查询(根据用户id):
上图用到的角色查询getRolePermission() 与权限查询getMenuPermission():
没问题的话,会直接把结果返回给前端,前端会把相关信息存到vuex中
获取路由和按钮信息
用户信息请求成功后,会在成功的回调中请求路由、按钮的相关信息
对应接口:/getRouters
首先根据userid获取菜单树:
上图中getChildPerms()方法会构建父子关系
最后,构筑前端需要的路由树:
到这里登录的整体流程就已经结束了
之后是退出登录: