domcfg 中的原因类型字段

Reason Type field in domcfg

为了确保我的 XPages Web 应用程序更加安全,我在 domcfg.nsf 的自定义登录表单中放置了一个验证码。 我按照 link 来构建我的验证码: http://www.notesmail.com/home.nsf/tip20100506

问题是在登录时,如果验证码被误解,我无法将字段的值更新为 reasontype 这让我出现消息 "Wrong captcha code." 我添加了这个动作来检查输入的文本是否等于验证码:

@If ( @UpperCase ( MyCaptchaField ) = TheRealValueOfMyCaptcha ; FIELD reasontype: = "6" ; "")

并且我添加了一个条件,如果 reasontype 的值等于 "6" ,则在计算字段错误消息中显示错误。 这不起作用,即使未写入验证码,我也可以访问我的 XPage。 我觉得reasontype字段只依赖5个预定义的条件。

有没有办法在登录表单中添加其他条件?

你那里有语法错误...这是更正后的代码:

@If ( @UpperCase ( MyCaptchaField ) = TheRealValueOfMyCaptcha ; FIELD reasontype := "6" ; "")

冒号和等号字符之间有一个 space。这意味着字符被视为两个运算符 - 一个列表连接运算符和一个相等运算符。

而不是这个

@If ( @UpperCase ( MyCaptchaField ) = TheRealValueOfMyCaptcha ;  FIELD reasontype: = "6" ; "")

你需要这个:

@If ( @UpperCase ( MyCaptchaField ) = TheRealValueOfMyCaptcha ;  FIELD reasontype := "6" ; "")

然而,经典的风格是:

FIELD reasontype := @If ( @UpperCase ( MyCaptchaField ) = TheRealValueOfMyCaptcha ;  "6" ; "");

我试过这段代码。但问题是它自动连接到我的应用程序并忽略了验证码的验证。

我找到了一个解决方案,如果验证码错误并且有效,我会在 "onsubmit" 操作中重定向到注销页面,并使用网络警报来避免 reasontype 字段。

感谢您的帮助。

该代码适用于旧式 Domino Web 表单,而非 XPage。另一种方法是使用特定于 XPage 的实现并使用 AJAX 登录 post。这是我发现的几个 OpenNTF: https://www.openntf.org/main.nsf/project.xsp?r=project/Xpages%20Captcha%20Custom%20Control https://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=Recaptcha%20Custom%20Control

这是一篇博客 post,它指向 Declan Lynch 的另一个 OpenNTF 项目,使用 AJAX 登录名 Custom login forms in xpages? 这里还有一个登录自定义控件的XSnippet(doLogin是SSJS登录的方法)https://openntf.org/XSnippets.nsf/snippet.xsp?id=dojo-login-dialog-custom-control