如何使用基于令牌的身份验证来保护网页?

时间:2017-06-14 17:33:26

标签: javascript ruby-on-rails ruby ajax

我正在使用ruby on rails建立一个网站,该网站是单独托管的,它向另一个后端api rails应用程序发出请求,该应用程序再次单独托管。显然,我已经使用基于令牌的oauth身份验证设置了后端api。

现在因为我没有处理会话,并且它是无状态的,我如何阻止用户访问我的前端Web应用程序中的某些视图页面?例如,我有一个消费者/预订页面。我不希望用户在未登录的情况下访问此页面。但任何人都可以直接输入网址并打开他们想要的任何页面。

在用户登录(来自.js.erb文件的ajax调用)上,我获取令牌并将其存储在localStorage变量中,以便将来每次请求到api。我知道我应该以某种方式使用此令牌来阻止用户访问受限制的页面。但我只是不知道如何。

2 个答案:

答案 0 :(得分:1)

现在,您已将token存储在localStorage 中,您需要将此令牌与请求一起传递到您要限制访问的页面并检查如果用户有权访问该页面。

答案 1 :(得分:0)

TL; DR:没有标准的方法或库;你必须实现你认为合适的功能。

我假设您正在使用某种类似前端框架的反应;如果是这样,那么如果localStorage中没有有效的令牌,则应终止任何更改当前视图的请求。查看有关React条件渲染的this post;如果你正在使用其他东西,那么这种方法仍然几乎相同。

否则,我会构建一个小脚本,包含在每个页面的开头,检查是否存在有效令牌,如果没有,则调用window.history.back()将用户返回到上一页。

(另一种方法是拦截对服务器上静态HTML文件的每次调用,检查是否存在令牌,如果有,则发送文件。否则,您可以发送自定义错误页面或随你)。