我正在构建Web应用程序,它将包括后端和前端(Web)部分 . 我想在这两部分之间引入auth,我的意图是使用OAuth2 .
前端部分将充当OAuth客户端,后端将充当OAuth提供者 - 因此后端将发出访问和刷新令牌 .
我的计划是在后端存储刷新令牌,并在前端存储访问令牌(并将每个请求作为头参数发送访问令牌) . 让我们说访问令牌持续24小时,刷新令牌持续3个月 .
我的问题是我何时(和如何)刷新存储在前端的访问令牌? (我问这个是因为我想在它过期之前刷新它;如果没有必要,不想面向具有登录流的用户)
-
我应该在每次成功请求后返回新的访问令牌并将其存储在前端(听起来不是一个好主意)
-
如果现有的访问令牌只是要过期,我应该返回新的访问令牌 - 如果通过头参数返回新的访问令牌,可能需要检查前端,如果是这样,则更换旧的访问令牌 .
-
我是否应该在前端侧存储访问和刷新令牌,如果访问令牌已过期,则使用刷新令牌获取新令牌
-
别的什么?
我不确定什么是最佳做法 .
1 回答
我认为3号是最好的情况 . 如果您使用cookie在前端存储令牌(access_token和refresh_token),则可以使用getCookie方法轻松地从请求中进行检查 .
check access token from request
if(isAccessTokenExpired)检查请求中的刷新令牌
if(isRefreshTokenExpired)LoginRequiredException(自定义激活并执行某些操作)
else刷新令牌(延长时间或创建新令牌)和响应setCookie
否则继续 .