点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我已经实现了验证码功能以登录到SAP PORTAL。 一切正常,除了我无法从登录模块向登录页面发送消息(告诉验证码失败)。 我想为完成这项工作提供帮助。 进一步的细节如下:
我修改了登录页面(tc〜sec〜ume〜logon〜ui.war),以根据文档显示验证码:
https://blogs.sap.com/2015/10/14/making- 更改为门户登录页面-nw-74/
我还根据此文档创建了一个新的登录模块:
https://help.sap.com/viewer/7ece2b41e5234afb98052b6ad1ab3e2e2f-e7f2e27f2e7f2e7f2e7f2e7f2e7f3e2f2e7f3e2f2e7f3e2f2e7f3e2e2f7e7e0 .html
登录模块和登录页面运行正常,验证码验证有效,并且当用户输入错误的验证码时,它会被发送回登录页面以再次尝试。 问题是我无法从新的登录模块向登录页面发送消息,例如提示用户重新尝试登录。
我尝试生成的是 文档中建议在登录模块中使用新的默认Java异常(抛出new Exception())以及throwNewLoginException和FailedLoginException方法。 异常有效并出现在日志中,但是我想要在页面上向用户显示消息。
我该怎么办才能显示错误消息,该消息起源于登录模块, 在登录页面上,以便用户可以知道出了什么问题?
最诚挚的问候
Thiago Nascimento。
嗨,
这有点棘手。 没有有关如何处理来自自定义登录模块的自定义错误消息的适当文档。
几年前,我有类似的要求,经过大量的研究和花费了数小时,我发现以下步骤有助于向用户显示正确的错误消息。
在自定义登录模块中,您只能抛出如下所示的预定义错误,请检查映射到jar文件中属性文件的消息旁边的数字。
ACTIVE_USERS_LIMIT_RECHED 14
CERTIFICATE_IS_NOT_TRUSTED 4
CHANGE_PASSWORD_ALPHA_NOT_ALLOWED 35
CHANGE_PASSWORD_ALPHANUM_REQUIRED 32
CHANGE_PASSWORD_CHANGE_PASSWORD_NOT_ALLOWED 38
CHANGE_PASSWORD_FAILED 26
CHANGE_PASSWORD_LOWER_CASE_NOT_ALLOWED 34
CHANGE_PASSWORD_LOWERCASE_REQUIRED 30
CHANGE_PASSWORD_MIXED_CASE_REQUIRED 33
CHANGE_PASSWORD_NEW_PASSWORD_INVALID 41
CHANGE_PASSWORD_NO_CONFIRM_PASSWORD 24
CHANGE_PASSWORD_NO_IDENTICAL_PASSWORDS 25
CHANGE_PASSWORD_NO_NEW_PASSWORD 23
CHANGE_PASSWORD_NO_PASSWORD 22
CHANGE_PASSWORD_NO_PASSWORD_LOGON 43
CHANGE_PASSWORD_NUMERIC_NOT_ALLOWED 36
CHANGE_PASSWORD_NUMERIC_REQUIRED 27
CHANGE_PASSWORD_OLDPASSWORD_IN_NEWPASSWORD 42
CHANGE_PASSWORD_PASSWORD_CONTAINED_IN_HISTORY 40
CHANGE_PASSWORD_PASSWORD_MAX_IDLE_TIME_EXCEEDED 44
CHANGE_PASSWORD_SPEC_CHARS_REQUIRED 31
CHANGE_PASSWORD_SPECIAL_CHARS_NOT_ALLOWED 37
CHANGE_PASSWORD_TOO_LONG 29
CHANGE_PASSWORD_TOO_MANY_INVALID_LOGON_ATTEMPTS 45
CHANGE_PASSWORD_TOO_SHORT 28
CHANGE_PASSWORD_USERID_CONTAINED_IN_PASSWORD 39
CHANGE_PASSWORD_WHITESPACES_NOT_ALLOWED 26
DIGEST_CREDENTIALS_NOT_VALID 12
EMERGENCY_USER_IS_ACTIVE 9
HEADER_VARIABLE_AUTHENTICATION_FAILED 48
IO_EXCEPTION 18
NO_LOGIN_MODULE_SUCCEEDED 17
NO_PASSWORD 19
NO_USER_MAPPED_TO_THIS_CERTIFICATE 5
P4_TICKET_NOT_VALID 13
PASSWORD_EXPIRED 1
PASSWORD_LOCKED 21
PASSWORD_NOT_USED_FOR_LONG_TIME 20
SAP_LOGON_TICKET_HAS_EXPIRED 6
SAP_LOGON_TICKET_IS_NOT_TRUSTED 7
SPNEGO_AUTHENTICATION_FAILED 47
UNABLE_TO_CREATE_SAP_LOGON_TICKET 8
UNABLE_TO_GET_SAP_LOGON_TICKET 11
UNABLE_TO_PASS_SAP_LOGON_TICKET 10
UNKNOWN_CHANGE_PASSWORD_ERROR 46
USER_ALREADY_LOGGED_IN 15
USER_IS_ANONYMOUS 50
USER_IS_CURRENTLY_NOT_VALID 2
USER_IS_LOCKED 3 USER_NOT_LOGGED_IN 16
USERNAME_IS_NOT_VALID 49
WRONG_USERNAME_PASSWORD_COMBINATION 0
以上所有都是LoginExceptionDetails类的一部分,它们是静态值。
引发如下异常
throwNewLoginException(" PASSWORD_NOT_USED_FOR_LONG_TIME",LoginExceptionDetails.USER_ALREADY_LOGGED_IN)
您需要更新 sap.com 〜tc〜je〜security〜impl.jar中的相应密钥 位于位置\ usr \ sap \ \ \ j2ee \ cluster \ bin \ services \ security \ lib \ private \
在 sap.com 〜tc〜je〜security〜impl.jar中,您需要打开jar并转到 文件夹com/sap/engine/services/execptions。 在这里,您可以看到每种语言的属性文件。 您需要根据语言更新属性文件。
该文件具有以下条目,并根据您从登录模块中抛出的编号更新相应的消息:
authentication_019 =身份验证失败。 不允许使用密码登录
authentication_049 =用户身份验证失败
authentication_015 =测试
authentication_014 =已达到登录限制。 稍后重试
authentication_012 =身份验证失败。 不支持登录机制
authentication_026 =密码更改失败
authentication_025 =新密码和密码确认不相同
authentication_024 =缺少密码确认
authentication_023 =缺少新密码
authentication_053 =配置的登录策略拒绝访问
authentication_022 =密码丢失
authentication_052 =您的密码将在{0}天后过期
authentication_021 =身份验证失败。 密码已锁定
authentication_051 =自您上次成功登录以来,您的帐户已发生{0}次登录尝试失败authentication_020 =验证失败。 密码已过期
authentication_050 =不允许使用匿名用户登录
authentication_009 =用户SAP *是活动的。 没有其他用户可以登录
authentication_005 =没有用户映射到客户端证书
authentication_004 =证书不受信任
authentication_003 =用户帐户已锁定
authentication_002 =用户当前无效
authentication_001 =密码已过期
authentication_000 =用户认证失败
如果您需要更多有关此的信息,请尝试获取任何标准登录模块的代码。 希望对您有帮助。
谢谢
Dheeram
谢谢Dheeram Kallem。
正如您提到的,无法在模块登录中创建新消息。 但是对于我们的要求就足够了,只需更改一个预定义即可。
最诚挚的问候,
JoãoPaulo。
一周热门 更多>