在eXist 4.7中,我在我的controller.xql中实现了persistentlogin,并且我注意到它在我的eXist web应用程序(“my”)中不会“持续”很长时间,而在同一个eXist实例中的eXide web应用程序使用相同的登录函数,按预期保持身份验证状态。
具体来说,如果我在晚上都登录了,那么第二天早上eXide仍然是登录的。),而我的应用程序不是。
我将其实现如下,持续时间设置为30天("P30D"):
import module namespace login="http://exist-db.org/xquery/login" at "resource:org/exist/xquery/modules/persistentlogin/login.xql";
let $duration := request:set-attribute("duration", "P30D")
let $set-user := login:set-user("org.exist.thema", (), false())因此,我在我的web应用程序中进一步测试了持久性,我发现登录名“消失”(丢失身份验证?)大约一个小时后,在网站上不活动。
在配置这一点时,是否还有其他eXist设置遗漏了?
我在这方面唯一能找到的文档是login.xql代码中的注释:https://github.com/eXist-db/exist/blob/develop/extensions/modules/persistentlogin/src/main/resources/org/exist/xquery/modules/persistentlogin/login.xql
发布于 2019-09-10 13:41:05
根据登录模块的源代码,有两种方法可以指定登录会话的持续时间:
$maxAge函数的login:set-user参数duration请求参数(当存在时重写$maxAge参数)在代码中,您正在设置duration请求属性,而不是请求参数;有关差异的更多信息,请参见这个答案。这解释了为什么登录模块完全忽略了声明持续时间的尝试。
要解决问题,您可以(1)更改为第一种方法:
login:set-user("org.exist.thema", xs:dayTimeDuration("P30D"), false())..。或者(2)在登录表单中提交请求参数,就像eXide在其登录表单中所做的那样;参见https://github.com/eXist-db/eXide/blob/master/index.html.tmpl#L505-L528。
https://stackoverflow.com/questions/57841635
复制相似问题