我正在开发一个使用Jersey构建的Restful Web Service,用于连接我的Android、iPhone应用和MySQL数据库。我还使用Hibernate将数据映射到数据库中。
我有一个sessionId(键),它在用户登录系统时生成。
在User类中:
在Session类中:
当用户成功登录系统后,我会将该sessionId发送给移动应用程序客户端。然后,当我想要根据已登录用户从数据库获取一些信息时,我会在每个请求中使用Session key作为身份验证
例如,对于用户参与的项目列表,我使用
如果它不是有效的会话密钥,我将向客户端发送403禁止代码。您也可以在此处查看。
问题是我不确定我的方法是否正确。考虑到Jersey和移动应用程序,您认为这种方法的
我有一个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作为身份验证
在REST服务中
进行检查。例如,对于用户参与的项目列表,我使用
client.GET(SERVER_ADDRESS/project/get/{SessionID})
而不是client.GET(SERVER_ADDRESS/project/get/{username})
。如果它不是有效的会话密钥,我将向客户端发送403禁止代码。您也可以在此处查看。
问题是我不确定我的方法是否正确。考虑到Jersey和移动应用程序,您认为这种方法的
缺点
如何?我仍然不知道在我的情况下Session key
方法是否是一个好主意。
SessionID
会改变,因此您的URL将不会引用资源。 - user647772