首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eXist持久化登录没有持久化

eXist持久化登录没有持久化
EN

Stack Overflow用户
提问于 2019-09-08 11:45:06
回答 1查看 71关注 0票数 1

在eXist 4.7中,我在我的controller.xql中实现了persistentlogin,并且我注意到它在我的eXist web应用程序(“my”)中不会“持续”很长时间,而在同一个eXist实例中的eXide web应用程序使用相同的登录函数,按预期保持身份验证状态。

具体来说,如果我在晚上都登录了,那么第二天早上eXide仍然是登录的。),而我的应用程序不是。

我将其实现如下,持续时间设置为30天("P30D"):

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-10 13:41:05

根据登录模块的源代码,有两种方法可以指定登录会话的持续时间:

  1. 通过$maxAge函数的login:set-user参数
  2. 通过duration请求参数(当存在时重写$maxAge参数)

在代码中,您正在设置duration请求属性,而不是请求参数;有关差异的更多信息,请参见这个答案。这解释了为什么登录模块完全忽略了声明持续时间的尝试。

要解决问题,您可以(1)更改为第一种方法:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57841635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档