首先为首页Index.vue配置路由
首页的作用是:当我们在登录页面登录时,若用户名和密码都正确,选择‘ 记住我 ’时,密码和用户名应该默认保存到本地缓存中,下一次登录时,首页会为我们判断,直接跳转到管理页,若本地缓存中没有用户名和密码时,则首页会为我们判断跳转到登录页。所以,首页DOM内容不需要写任何东西,只需要进行判断
因此,在选择 ‘ 记住我 ’ 登录时,要将账号及密码保存到缓存中
在adminAPI中,补充内容:从params中解构出ckMe(给‘ 记住我 ’ 刷个很难想绑定的属性),我们要做的是当登录名及密码均正确并勾选‘ 记住我 ’时,页面进行跳转,并将用户名和密码保存到缓存中,所以此处先要对success进行判断,如果success是true,则进行下一步判断:是否勾选了ckMe,如果勾选了ckMe,则再进行下一步将登录名及密码保存到缓存中。
那么,当我们将浏览器关闭并重启登录网站时,若浏览器缓存中已有loginId,loginPwd及ckMe,那么,我们需要重新获取这些数据,因此在首页Index.vue页面中,我们首先要获取这些数据,如下图,并且需要做一个判断,若ckMe=true,loginId,loginPwd在缓存中均有值时,此时需要将页面跳转到Manager.vue
但是,在此处,我们不能直接进行$router.push跳转,因为token令牌只有在登录以后才会重新获取,并且token令牌使用sessionStorage保存,每次关闭浏览器后都会自动清除,因此此处必须重新向后台发送请求,所以在当前页面需要导入adminAPI,并且将loginId,loginPwd及ckMe作为loginData的属性,将loginData作为参数重新调用$login方法来获取新的token令牌,并将token令牌保存到本地缓存,并保存到请求头
*******此时重新调用adminAPI会存在一个缺陷,因为当第一次登录时,本地缓存中没有loginId及loginPwd,但是登录完成后,本地缓存的密码是使用md5加密过的密码,若此时在Index.vue首页直接调用$login方法,那么重新获取到的密码会再次经过md5加密,所以在此处,我们应该重新写一个方法:$login2,与$login不同的是,$login2只需要删除对密码的md5加密片段即可!!!,如下图所示
当调用$login2方法后,我们需要解构出token和success,当success时(即loginId和loginPwd都正确时),我们将token设置为本地缓存,并使用$setToken方法,将token信息保存到请求头,这样当登录成功后,我们就可以以当前token信息来操作页面,若success获取不到(即else时),我们就将页面重新跳转到登录页面
注意这是一个双层的 if 判断,首先我们判断loginId,loginPwd和ckMe在缓存中是否有值,若有值,我们再获取loginId,loginPwd和ckMe,然后调用发送请求的$login2方法来重新获取token,当密码和用户名均正确时,我们将token保存到本地缓存,并将token保存到请求头,再实现路由的跳转到manager页面,否则跳转到login登录页面,当loginId,loginPwd和ckMe在缓存中没有值时,页面也直接跳转到login登录页面