我正在尝试在 native iOS 应用程序中实现基于表单的身份验证,但我需要在没有收到质询的情况下登录,我想打开一个表单并登录。我实现了一个包含 isCustomResponse
函数的 ChallengeHandler 类。在此函数中,我检查了响应是否包含 (j_security_check),以便判断响应中是否存在质询。
我有两个问题:
- 为什么我没有收到来自服务器的挑战?我尝试调用许多 protected 适配器,但从未收到包含 j_security_check 的响应。
- 当我尝试通过调用 submitLoginForm 毫无疑问地登录时,我从服务器收到一个错误,为什么我会收到这个错误,我该如何解决?
Exception thrown by application class 'com.worklight.core.auth.impl.AuthenticationFilter.doFilter:241'
java.lang.RuntimeException: com.worklight.gadgets.GadgetRuntimeException: Invalid gadget request format: /iOSNativeAPI/iOSnative/0/j_security_checknull. Unknown handler path: j_security_check
biên tập:
我正在使用的环境是 swift 1.2,本地应用程序的 xCode 6.4,我正在集成的 Worklight 登台服务器是 6.1,在服务器上部署本地 API 后,我尝试使用以下领域登录称为“LDAPRealm”,如果在扩展 ChallengeHandler 类后键入 MyChallengeHandler,我会为此领域创建一个挑战处理程序:
var ldapAuthChallengeHandler1 = MyChallengeHandler(realm: "LDAPRealm")
我想在不响应质询的情况下登录,所以我从创建的质询处理程序中调用了 submitLoginForm 函数:
ldapAuthChallengeHandler1.submitLoginForm("j_security_check", requestParameters: ["j_username": "xxxxx@gmail.com", "j_password": "11111111"], requestHeaders: nil, requestTimeoutInMilliSeconds: 0, requestMethod: "POST")
但是,我收到了错误消息,我不知道为什么。
基于表单的身份验证不支持抢先式身份验证。这意味着您只能通过挑战的响应登录。
关于为什么你的挑战没有被调用,很难用提供的信息来判断。
检查 Wireshark,将日志放在各处,看看您是否收到挑战。也可以提供您的 authenticationConfig。
Tôi là một lập trình viên xuất sắc, rất giỏi!