Refresh Token 换取 Access Token
打赏作者

尼好再见

接下来可否讲讲 api 的权限管理,权限管理最好用 admins 表不用 users 表

JellyBool 回复 尼好再见

我没试过分表这种情况做 api

尼好再见 回复 JellyBool

那api形式的权限讲讲看吧主要是 vue这块不知道该怎么处理,比如一个角色有某些权限,就是只能看到部分功能 还有就是有些功能只有查看的权限没有编辑的权限,像这样是不是请求api之前先要请求权限然后根据权限去渲染需要显示的项

jasester

终于等到你 哈哈哈O(∩_∩)O哈哈~

尼好再见

注销的时候是不是 cookie 中的 auth_id 没删除 TokenProxy 中的这句 app(‘cookie’)->forget(‘refreshToken’); 能删除调cookie 吗 貌似我的还存在

JellyBool 回复 尼好再见

嗯哼,我仔细看看

useramaya

登录注册时请求特别的慢,有什么可解决的办法

etoupcom

access_token过期后点击退出登录报错,Call to a member function token() on null

JellyBool 回复 etoupcom

确定携带 access_token 发起请求了么?或者说判断一下,这个我后面修正一下

4143920

有三个问题:
1.为什么用了localstorage之后还要再进行cookie存储token
2.refresh_token 加密作为 auth_id的原因是什么,在客户端发起的是refresh_token明文,而且token没有用户敏感信息。
3.在安全性上讲,怎么算best practice

JellyBool 回复 4143920

1.localstorage 存的是 access_token,cookie 的 refreshToken 是 httponly 的,这样在一定程度上保证了 refreshToken 的安全。不会出现被 js 劫持 refreshToken 这样的情况

2.auth_id 其实只是一个随便定义的字符串而已,我处于便利直接使用加密的 refreshToken,你使用 str_random() 生成也是 OK 的。

3.见第一个

yz89 回复 JellyBool

视频中在开发者工具 cookie 里面是可以看到 refreshToken 的,不太明白 httponly 怎么保证的安全?

JellyBool 回复 yz89

你试试使用 js 可以获取到这个 cookie 么?

4143920

在 app.vue 里 elseif Cookie.get auth_id 在什么情况会触发呢。 如果没有登录不会触发,登录之后触发getToken,好像没有情况可以触发的到。

JellyBool 回复 4143920

登录之后,页面停留时间超过 access_token 生效时间,再次刷新应该就会触发。

4143920 回复 JellyBool

超过时间 触发的应该是 setAuthUser 里面的 catch(error => {
dispatch(‘refreshToken’)
})
跳过了 Cookie 而且auth_id 不懂在哪里体现

JellyBool 回复 4143920

这样?用户访问过来,access_token 无,refreshToken 在,这个时候是这个流程么

longjl1980 回复 JellyBool

同上,还是不太明白auth_id,怎么看都不会触发啊,localstorage是没有过期的,当超时后(非正常退出的情况),无论怎么样jwtToken.getToken()都是为true的,那么就会执行setAuthUser,都进入不了auth_id的判定啊??

JellyBool 回复 longjl1980

我仔细看看,其实我是想利用这个便利实现类似记住用户的功能的,那这样的话,这里可以考虑一下:

 removeToken() {
        window.localStorage.removeItem('jwt_token');
        Cookie.remove('auth_id'); // 这个要不要删掉?
    },
liujun 回复 JellyBool

jelly应该是讲了两种方法,两种分开用就行。要么catch要么created里面执行refresh

kwen8

我的实现是access_token过期之后如果有错误就catch了再去refresh_token,这样实现是否可以呢?

foxriver123

auth_id 有存在的必要性 , 直接判断refreshToken来做效果好像也是一样的吧,还有个问题是js-cookie这个包和localStorage有什么区别吗 @jellyBool

liujun

localstorage和js-cookie有什么区别?

JellyBool 回复 liujun

cookies 是一种比较便利的获取数据的方式而已