【发布时间】:2012-08-22 10:03:15
【问题描述】:
我正在我的Android, iPhone 应用程序和 MySQL 之间开发一个Restful Web Service using Jersey。我还使用Hibernate 将数据映射到数据库。
我有一个 sessionId(密钥)。它是在用户登录系统时生成的。
在User类中:
public Session daoCreateSession() {
if (session == null) {
session = new Session(this);
} else {
session.daoUpdate();
}
return session;
}
在Session 班级:
Session(User user) {
this.key = UUID.randomUUID().toString();
this.user = user;
this.date = new Date();
}
void daoUpdate() {
this.key = UUID.randomUUID().toString();
this.date = new Date();
}
当用户成功登录系统时,我将此 sessionId 发送到移动应用程序客户端。然后,当我想根据登录的用户从数据库中获取一些信息时,我会检查这个Session key 作为每个请求的身份验证in the REST Services。
例如用户参与的项目列表,我使用client.GET(SERVER_ADDRESS/project/get/{SessionID})
插入client.GET(SERVER_ADDRESS/project/get/{username})。
如果它不是有效的会话密钥,我将向客户端发送 403 禁止代码。 也可以看看here
问题是我不确定我的方法。您如何看待 cons 在考虑泽西岛和移动应用程序的这种方法中?
我仍然不知道 Session key 方法对我来说是否是个好主意。
【问题讨论】:
-
这不是 RESTful。
SessionID将发生变化,因此您的 URL 将不引用资源。 -
为什么?我只用this approach
-
一个 URL 标识一个资源。你的资源是什么?
-
不,MySQL 是您的后端。在您的上下文中,项目和用户是资源。请阅读brief introduction to REST。
-
好的,谢谢,你是对的,但你已经知道你的问题的答案了:)
标签: spring hibernate rest spring-security jersey