如何在DropWizard中维护用户会话?

8
我正在寻找一个持久化的会话管理器,它可以将会话保存到文件系统中(类似于PHP),并且可以与DropWizard一起使用。我看到有一个Environment.getSessionHandler(),但是我没有看到相关文档。
我可以自己编写,但我希望得到现成的解决方案。上述SessionHandler是我要找的吗?如何使用它?

如果您已经找到解决方案,请将其写为答案。 - din_oops
3个回答

6

使用 Dropwizard>0.7

environment.jersey().register(HttpSessionProvider.class);
environment.servlets().setSessionHandler(new SessionHandler());

然后在你的资源类中使用@Session注解。


@AppleGrew 我想知道你们是否有提供gist或者更多的gist可以分享。在我的情况下,我需要设置和检查一个cookie值(它是一个jwt令牌),但它不会在服务器上持久化。 - Sbham

2

DropWizard不支持会话,而且根据作者在谷歌组中的帖子,他们也不打算在将来支持它。

目前唯一的方法是自己实现org.eclipse.jetty.server.session.SessionHandler或查找已经存在的内容,然后调用environment.setSessionHandler(...)

如果您需要此信息,DW 0.6.2使用Jetty 8.1.10

您还可以查看http://cosmo-opticon.net/blog/2013/1/23/session-based-security-in-dropwizard,看是否可以重复使用其中的一些内容。


4
DW>0.8现在使用Jersey 2和不同的注入框架(HK2),本文已经过时,需要对DW>0.8进行适应。 - Toilal

-2

REST在定义上是无状态的,因此根本不应该使用任何会话。无论会话状态如何,相同的URI始终应返回相同的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接