我想对我们的新REST API实现基于JWT的身份验证.但是由于在令牌中设置了到期,是否可以自动延长它?如果他们在那段时间内积极使用该应用程序,我不希望用户在每X分钟后需要登录.这将是一个巨大的用户体验失败.
但是延长过期会创建一个新令牌(旧令牌在到期之前仍然有效).每次请求后生成一个新令牌听起来很愚蠢.当多个令牌同时有效时,听起来像是一个安全问题.当然,我可以使用黑名单使旧的旧的无效,但我需要存储令牌.JWT的一个好处就是没有存储空间.
我发现Auth0是如何解决它的.它们不仅使用JWT令牌,还使用刷新令牌:https: //docs.auth0.com/refresh-token
但同样,要实现这一点(没有Auth0),我需要存储刷新令牌并保持其过期.那么真正的好处是什么?为什么不只有一个令牌(不是JWT)并在服务器上保持过期?
还有其他选择吗?使用JWT不适合这种情况吗?
我setInterval每秒运行一段代码30次.这很好用,但是当我选择另一个选项卡(以便我的代码的选项卡变为非活动状态)时,由于setInterval某种原因将其设置为空闲状态.
我做了这个简化的测试用例(http://jsfiddle.net/7f6DX/3/):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Run Code Online (Sandbox Code Playgroud)
如果您运行此代码然后切换到另一个选项卡,等待几秒钟然后返回,动画将继续在您切换到另一个选项卡时的位置.因此,如果选项卡处于非活动状态,则动画不会每秒运行30次.这可以通过计算setInterval每秒调用函数的次数来确认- 如果选项卡处于非活动状态,则不会是30,而只是1或2.
我想这是通过设计完成的,以提高性能,但有没有办法禁用这种行为?在我的场景中,它实际上是一个缺点.
我正在测试setTimeout使用此测试的准确性.现在我注意到(正如预期的那样)setTimeout并不是非常准确,但对于大多数设备并不是非常不准确.现在,如果我在Chrome中运行测试并让它在后台标签中运行(那么,切换到另一个标签并在那里浏览),返回测试并检查结果(如果测试完成),它们会发生显着变化.看起来超时运行速度慢得多.在FF4或IE9中测试没有发生这种情况.
因此,看起来Chrome暂停或至少减慢了无法关注的标签中的javascript执行速度.关于这个问题在网上找不到多少.这意味着我们无法运行后台任务,例如使用XHR调用定期检查服务器,并且setInterval(我怀疑看到相同的行为setInterval,如果有时间,我会编写测试).
有没有遇到过这个?这种暂停/减速会有解决方法吗?你会把它称为一个错误,我应该这样提交吗?
在laravel 5中处理过期令牌的最佳方法是什么?
我的意思是我有一个页面,它有一些执行ajax请求的链接.当页面加载时它们工作正常,但是当我等待一段时间后,我得到一个TOKEN MISMATCH错误.
现在,我必须刷新页面以使其再次工作.但是,我不想刷新页面.我想要一些方法刷新令牌或其他一些工作来修复它.
我希望你明白我的观点.
我正在使用Google登录.用户来到我的站点并登录gapi.auth2.getAuthInstance().signIn(),或者他们已经登录,当页面加载(或重新加载)时,我们获取状态.在这一点上,我有一个身份令牌好一个小时,我可以在服务器上验证.
当用户离开浏览器(例如,过夜)时,此令牌将过期.gapi.auth2.getAuthInstance().isSignedIn.get()返回true,但令牌不验证.
如何登录用户并在会话处于活动状态时保持登录状态(即浏览器尚未关闭)?或刷新令牌?比重新加载页面更优雅的东西......
编辑:刷新令牌不是正确的答案; 我不想离线访问(并且不想要求权限).谷歌显然认为用户仍然登录我的应用程序; 用户可以重新加载页面并获取新令牌而无需再次提供凭据.当然有一些机制比隐藏的iframe更优雅,以获得更新的令牌?
我设置了一个setTimeout例如10s,在那个10s期间,我暂停/睡眠PC.在醒来时,以下哪项是真的: -
重复的setInterval也是同样的问题.是否保证(不)继续.
根据我在几个 SO 答案中的理解,如果计算机在 asetTimeout被调用后进入睡眠模式,则应忽略睡眠期。
例如:
setTimeout(foo, 30000);foo被调用但是,我的测试显示以下行为:
setTimeout(foo, 30000);foo调用我的理解是,当计算机唤醒时,如果在休眠期间会触发超时,则立即触发,否则在t0 + [超时值]时触发。
那么预期的行为是什么?所有浏览器和操作系统都一样吗?
我的一项测试(在 Windows 10 上使用最新版本的 Chrome):https : //codepen.io/robloche/pen/GRJvEJB
javascript ×4
settimeout ×2
api ×1
browser ×1
jwt ×1
laravel ×1
laravel-5 ×1
node.js ×1
php ×1
security ×1
setinterval ×1
sleep-mode ×1
tabs ×1