我正在使用securesocial它工作正常,但现在每次我更改一些scala代码时,我都必须再次登录。在开发模式下是否有可能在会话中伪造用户,所以我不必经常登录?
谢谢,
乔里斯·维伦斯
我正在使用securesocial它工作正常,但现在每次我更改一些scala代码时,我都必须再次登录。在开发模式下是否有可能在会话中伪造用户,所以我不必经常登录?
谢谢,
乔里斯·维伦斯
SecureSocial 默认使用默认 Play 缓存来存储身份验证器(将 cookie 与登录用户匹配)。默认播放缓存是 EHCache,它是使用您可以在 jar 中找到的 ehcache.xml 配置的。默认配置严格存储在内存中,这意味着当应用程序重新启动时,它会丢失所有值。幸运的是,覆盖 EHCache 配置以写入磁盘非常容易。
将 jar 中的 ehcache.xml 复制到您的配置目录。添加<diskStore path="java.io.tmpdir"/>
并更改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>
如果您有兴趣了解如何配置其余部分,请参阅 ehcache-failsafe.xml 文件中的一些文档,该文件也在 Play jar 中。
发生这种情况是因为在 DEV 模式下,当您更改代码时,Play 会重新启动应用程序。因此,示例用户服务中的数据会丢失。