使用REST服务访问控制页面

时间:2013-05-11 23:48:54

标签: javascript web-services rest

我已经阅读了很多关于使用REST服务进行身份验证,授权等的讨论。 我现在知道如何使用REST进行身份验证/授权。

但我没有得到的是,如何使用REST服务控制对网页的访问。 这是一个好习惯吗?如果是这样,怎么样?

示例:

  • REST服务的根:localhost / services

  • 网页根:localhost / pages

现在,情景是:

1。客户端尝试转到localhost/pages/join.html页面,但无权访问。

2. 因此,服务器应该检查客户端是否有权访问该页面,并且因为它没有权限,所以应该将客户端重定向到某个地方。

我的问题不是服务器如何检查,了解客户端是否正确。

但是,我想知道何时以及如何使用REST服务进行此检查和重定向。

例如,我想到的第一个想法是,在join.html的主体中,<body onload>运行一个javascript来检查客户端向REST服务发送JSON消息的访问权限,比方说,localhost/services/access

然后,服务将返回其答案,如果正常,则将加载页面,否则,将使用window.location.href重定向。这是决定使用REST服务访问网页的权利吗?还有其他常见的解决方案/实践吗?

请再次注意,我不是在问,如何保护我的REST API等,但

如何使用REST服务检查我的网页的访问权限?

2 个答案:

答案 0 :(得分:2)

您可以将从REST API接收的令牌发送到Web服务器,使其保存在浏览器客户端的会话对象中。

答案 1 :(得分:1)

我认为最好在服务器端进行强化和身份验证,客户端不安全,因为你的代码和逻辑完全暴露,很容易伪造请求。

通常,在服务器端,您可以使用拦截器来拦截请求,在该拦截器中,检查用户角色及其访问权限,然后决定是重定向请求(或发送403响应)还是发送正常资源。

拦截器的实现取决于您在服务器端使用的语言。

例如,如果您使用java(jax-rs):http://docs.oracle.com/cd/E24329_01/web.1211/e24983/secure.htm#autoId0

如果使用servlet,请构建过滤器。

如果使用struts2,则直接支持拦截器。使用Spring开发的应用程序,您可以使用AOP拦截请求。

如果将node.js与express一起使用,则可以构建一个处理auth逻辑的中间件。

希望这些有用:)

<强>更新

请求流程是:获取请求 - &gt;检索客户端令牌(通常是cookie) - &gt;根据该令牌找到用户角色 - &gt;检查角色是否被允许访问资源 - &gt;服务器资源