反饋已提交
網絡繁忙
本文介紹單點登入中一些常見報錯及解決方案。
問題描述:
在 IE 瀏覽器下開啟控制檯顯示單點登入成功,但是存取決策系統時依舊會提示需要登入,如下圖所示:
原因分析:
IE 隱私等級過高,這樣會導致它傳送單點登入請求後,平台傳回的 cookie 寫不進去,而其他瀏覽器是默許的。
解決方案:
將 IE 隱私等級調整到低或以下。
使用者密碼包含特殊字元,例如hgyusdre+CVsdej+HU09Y6y==,單點登入失效。但如果在登入頁輸入帳號密碼,登入成功。
當密碼存在特殊字元,透過單點登入API直接存取會失敗,需要對密碼進行轉碼。
1)開啟瀏覽器控制檯,以谷歌瀏覽器為例,在控制檯中輸入encodeURIComponent("密碼"),可將密碼進行轉碼。如下圖所示:
2)單點登入API使用轉碼的密碼進行存取。
使用者在 IE 瀏覽器上單點登入失敗,但開啟 IE 瀏覽器的除錯模式又可以正常單點登入。
單點登入程式碼中使用console.log()列印 debug 資訊,在 IE 瀏覽器中該程式碼是預設不執行的,需要在 F12 開啟除錯工具才有效。
把列印日誌的程式碼遮蔽掉即可正常登入。如下圖所示:
內網環境下,單點登入失敗。
單點登入程式碼中,若引用了 JS 檔案,內網環境下是無法生效的。如下圖所示:
下載 JS 檔案到本地並修改對應的路徑即可。以 Ajax 跨域非同步單點登入 為例:
1)存取右側連結: 各版本 jquery下載 ,下載程式碼中對應的 jquery 檔案。
2)將所下載檔案中的jquery.min.js檔案放到%FR_HOME%\webapps\webroot下,如下圖所示:
3)修改 HTML 檔案中jquery.min.js檔案的路徑,如下圖所示:
用的是後臺登入,切換使用者之後,要點兩次系統進去才能是對應的使用者,
後臺登入的過期時間參考平台逾時時間,如果需要頻繁切換,需要手動登出。
觸發登入API時,先觸發一次登出,https://IP:port/webroot/decision/logout/cross/domain,再存取後臺登入API,確定登入的是新的使用者。
泛微 E9,PC 端單點 FR,偶發失效,控制檯看到的是這樣的報錯:Cannot read property 'loginId' of underfined,如下圖所示:
正常的話,泛微登入的時候會觸發Frlogin.js執行,進而獲取登入帳號。上述現象是由於泛微登入了,沒有執行對應的獲取帳號的方法導致的。
延時執行 loginFR() 方法,100 不夠,需要加到 1000 才行。如下圖所示:
1)方法一:修改 finedb 中 fine_conf_entity 表,將以 LoginVerificationConfig 開頭的欄位值由 true 改為 false,重啟即可。
2)方法二:http://地址:埠/webroot/decision/login/cross/domain?fine_username=超管帳號&fine_password=超管密碼&validity=-1,存取該地址走單點登入的API登入, 可以繞過驗證,登入成功後再存取 webroot/decision
匯出的帳號和密碼都是正確的,但是單點登入不成功原因分析:
帳號是中文的,或者密碼中帶有“#,@,+,-,=”這種特殊字元就會導致單點登入不成功
修改 login.js 的程式碼,對 username 和 password 用encodeURIComponent進行轉碼
直接在存取的URL中輸入密碼,會報錯400,如圖所示:
密碼為特殊字元,不經過轉碼,直接用URL存取會導致登入失敗。
將密碼進行轉碼,在URL中使用轉碼後的密碼存取。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙