EasyNTS作為視訊上雲閘道器,具備視訊組網、遠端運維等功能,上線前會經過研發部-測試部-專案部多重測試,在這個過程中不斷完善產品。
近期我們的開發人員測試EasyNTS的相容性,發現當在相同的伺服器下,如果同時部署了EasyNTS和EasyNVS,在同一瀏覽器去存取兩個服務的web頁面,這時假如先登入EasyNVS,就會導致EasyNTS無法登陸;假如直接進入EasyNTS,則會顯示網路請求失敗。
原因是登入EasyNVS之後向Cookie中設定了token,EasyNTS在傳送請求之後,拿到了EasyNVS的token進行驗證,然而肯定是驗證失敗的,所以導致無法登入。
Cookie中的值:
EasyNVS登入之後EasyNTS就報錯:
一開始驗證使用者是否登陸,是首先通過token進行驗證的,但是EasyNTS並不是通過token,是通過sid作為鍵獲取對應的值來進行驗證的。所以將EasyNTS中的token驗證的程式碼給去除就可以了。
// 判斷使用者是否已經登入
func userIsLogin(c *gin.Context) (bool, error) {
token := sessions.GetToken(c)
// 如果查詢到了 token
if token != consts.EmptyString {
username, password, str := security.ResolveToken(token)
if str == consts.EmptyString && username != consts.EmptyString && password != consts.EmptyString {
// 從 session 中獲取使用者 ID 同 token 中解析,二次驗證防止出錯
userID := sessions.GetUserID(c)
if userID == username {
return true, nil
} else {
return false, errors.New("Session資訊與令牌資訊不一致,請重新登入!")
}
} else {
return false, errors.New("令牌已過期,請重新登入!")
}
}
return false, errors.New("未查詢到令牌資訊,請重新登入!")
}
解決之後就可以正常使用,正常登入:
如想詳細瞭解,可進入TSINGSEE青犀視訊進行瀏覽查閱。TSINGSEE青犀視訊團隊專注於計算機視覺、圖形識別領域的開發與研究, 主力產品涵蓋支援ONVIF、RTSP、GB/T28181等多協定、多路數的智慧分析伺服器。主要產品包括EasyGBS國標視訊雲服務、EasyDSS網際網路視訊雲服務、EasyCVR安防視訊雲服務、EasyRTC視訊會議雲服務、EasyNVR視訊邊緣計算閘道器、EasyNTS上雲閘道器等等,同時還擁有EasyDarwin開源社群及開放平臺。
EasyDarwin是國內視訊串流媒體團隊TSINGSEE青犀視訊開發和維護的開源社群。從2012年12月建立並行展至今,從原有的單服務的串流媒體伺服器形式,擴充套件成現在的雲平臺架構的開源專案。