Playframework 2.0 开发时安全登录

Playframework 2.0 开发时安全登录,playframework-2.0,securesocial,Playframework 2.0,Securesocial,我正在使用securesocial,它工作正常,但现在每次我更改一些scala代码时,我都必须再次登录。在开发模式下,是否有可能在会话中伪造用户,这样我就不必经常登录 谢谢 Joris Wijlens发生这种情况是因为在开发模式下,当您更改代码时,Play会重新启动应用程序。因此,示例用户服务中的数据丢失 SecureSocial默认情况下使用默认播放缓存存储验证器(将cookie与登录用户相匹配)。默认的播放缓存是EHCache,它使用您可以在jars中找到的EHCache.xml进行配置。默

我正在使用securesocial,它工作正常,但现在每次我更改一些scala代码时,我都必须再次登录。在开发模式下,是否有可能在会话中伪造用户,这样我就不必经常登录

谢谢


Joris Wijlens发生这种情况是因为在开发模式下,当您更改代码时,Play会重新启动应用程序。因此,示例用户服务中的数据丢失

SecureSocial默认情况下使用默认播放缓存存储验证器(将cookie与登录用户相匹配)。默认的播放缓存是EHCache,它使用您可以在jars中找到的EHCache.xml进行配置。默认配置严格在内存中,这意味着当应用程序重新启动时,它会丢失所有值。幸运的是,覆盖EHCache配置以写入磁盘非常容易

将JAR中的ehcache.xml复制到您的配置目录。添加
并将
diskPersistent
更改为
true

所以我的看起来像这样:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false">
<diskStore path="java.io.tmpdir"/>
<defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="false"
        maxElementsOnDisk="10000000"
        diskPersistent="true"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"
        />
</ehcache>


如果您有兴趣了解如何配置它的其余部分,那么在Play jars中的ehcache-failsafe.xml文件中也有一些文档。

Strange。。。您是否在某处(在
Global.onStop()
或其他地方)清除cookie?我不知道。所以这不是默认行为?在切换到userserviceFor Play 2.2的数据库实现后,问题消失了,我在Play/framework/src/Play cache/src/main/resources/中找到了ehcache-default.xml文件。我将其重命名为ehcache.xml,并将其放在项目的conf目录中。我刚把diskPersistent设置为true,它就工作了。但不确定该部件是否必要。