3

在阅读了来自不同人关于 Rest 支持的应用程序的会话管理的大量评论之后,我想到了要做的事情。

我的应用程序也可以从浏览器(作为普通 Web 应用程序)和移动设备访问。应用程序最初是使用服务器中的 http 会话管理编写的,用于基于浏览器的应用程序。现在在获取移动客户端的同时,我们已经实现了 Rest web 服务,移动设备和浏览器客户端也具有相同的服务层。

当用户使用移动设备登录时,我们正在创建一个唯一的身份验证令牌,生成一个 http 会话,并将带有此令牌 ID 的 http 会话存储为应用程序中的键、值映射。稍后我们希望来自移动设备的每个用户请求都返回此令牌,并使用此令牌从地图获取会话并继续。

有人可以查看我的方法并确认它是否可以吗?

现在,我有第二个问题 - 我们正在使用 GWT 中的 JsonPRequestBuilder 使用 jersey-guice 调用我的后端 REST 服务。如何在来自 GWT 的 jsonp 调用期间在 http 标头中发送此令牌?

4

2 回答 2

2

“REST 中的会话”是一个矛盾的说法。

当用户使用移动设备登录时,我们正在创建一个唯一的身份验证令牌

看起来不错,虽然它看起来有点像你重新发明了 OAuth。

生成一个 http 会话,我们将带有这个令牌 ID 的 http 会话存储为 app 中的键、值映射。

在服务器端保留一些缓存以加快访问速度是可以的,但不要将其称为session,也不要将其绑定到特定令牌(如果数据是特定于用户的,则可以将其绑定到用户;如果有意义,用户 ID 将只是缓存键的一部分)。

您不会谈论该缓存的到期时间,或者您如何/何时清理它并释放内存。

现在,我有第二个问题 - 我们正在使用 GWT 中的 JsonPRequestBuilder 使用 jersey-guice 调用我的后端 REST 服务。如何在来自 GWT 的 jsonp 调用期间在 http 标头中发送此令牌?

正如@Arcadien 所说,JSONP 只是<script>在页面中插入一个元素,因此您只能控制 URL,因此这是您应该/可以传递身份验证令牌的地方(尽管它并不真正安全)。
我可以质疑您从移动“本机”应用程序使用 JSONP 的原因吗?AFAIK 没有来自 UIWebViews 或类似的 SOP 问题,所以RequestBuilder只是XMLHttprequest工作™。

于 2012-07-03T10:33:16.033 回答
0

对于第二个:使用 JSONP,您必须将令牌添加为纯 http 参数,当使用常规 XMLHttpRequest 时,您无法访问像 Request 这样的对象。所以你不能设置任何类型的标题,一切都应该放在查询字符串中。

于 2012-07-03T08:19:42.197 回答