加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring – 使用Jersey的RESTful Web服务的会话管理

发布时间:2020-12-15 01:36:44 所属栏目:大数据 来源:网络整理
导读:我正在开发Android,iPhone应用程序和MySQL之间的Restful Web Service using Jersey.我还使用Hibernate将数据映射到数据库. 我有一个sessionId(键).它是在用户登录系统时生成的. 在用户类中: public Session daoCreateSession() { if (session == null) { se

我正在开发Android,iPhone应用程序和MySQL之间的Restful Web Service using Jersey.我还使用Hibernate将数据映射到数据库.

我有一个sessionId(键).它是在用户登录系统时生成的.

在用户类中:

public Session daoCreateSession() {
    if (session == null) {
        session = new Session(this);
    } else {
        session.daoUpdate();
    }
    return 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发送到移动应用客户端.然后,当我想根据登录用户从数据库中获取一些信息时,我会在每个请求的REST服务中将此Session key作为身份验证进行检查.

例如,对于用户参与的项目列表,我使用client.GET(SERVER_ADDRESS / project / get / {SessionID})

不受客户端的限制.GET(SERVER_ADDRESS / project / get / {username}).

如果它不是有效的会话密钥,我将向客户端发送403禁止代码.
你也可以看看here

问题是我不确定我的做法.考虑到泽西岛和移动应用程序,您如何看待这种方法的缺点?

我研究过Spring Security.如果Session密钥方法不好,我仍然不知道我可以使用它.你能帮助我吗?

最佳答案
如果你想使用SessionId,它应该有一个验证时间,如下所示:

private static final int MINUTES = 90;

public boolean isValid() {
   return System.currentTimeMillis() - date.getTime() < 1000 * 60 * MINUTES;
}

我还建议你看看Jersey security and session management.

检查这些链接是否有Spring安全性:
Spring Security with Jersey
和Spring security application sample.

再看看Jersey rest API security.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读