本發明涉及物聯網,尤其涉及一種登錄方法及系統。
背景技術:
1、token在計算機領域代表令牌,是當前用戶的唯一標識,相當于計算機中的個人身份證。所謂登錄即服務端通過識別用戶身份的有效性返回給用戶一個token的過程。此后,服務端通過用戶攜帶的token可以識別用戶的身份,能記錄一些用戶行為同時也可以根據token給用戶授予不同的權限。總之,token是當前互聯網中不可或缺的一項技術。但是如果token被第三方截獲,那么第三方就可以拿著這個token在當前系統中任意操作,所以一般服務端都會對token設置有效時長,過了有效期該token就會被服務端識別為無效token,需要用戶重新獲取token。因此為解決獲取token,以及獲取到新的token后如何將它給到其他接口獲取新的數據,現有技術中一般采用如下方式:
2、方案一:直接將頁面的token設置的非常長,盡可能保證用戶在連續使用期間不會失效,一旦失效就重新登錄;但是長時間有效的token很可能被人惡意攻擊,對系統安全不友好。
3、方案二:登錄頁面,當遇到token失效時,跳轉到登錄頁面或者彈出登錄彈窗讓用戶進行二次登錄,登錄成功后重新跳轉到或刷新當前頁面。但是這種阻斷式登錄彈窗在用戶體驗方面相對較差,會導致很大一部分用戶流失。
4、方案三:token失效后,客戶端通過主動發起獲取新token的請求,拿到新的token后刷新頁面,迫使當前頁面的所有接口都重新請求一遍。該方案實現了一部分的無感登錄,但是,通過刷新頁面的方式,即通過重新加載當前頁面,迫使當前頁面所有接口攜帶新的token都重新發起一次請求,此方案服務端開銷大、性能低,沒有做到按需請求,同時客戶端用戶會有閃屏的感覺,用戶體驗差。
技術實現思路
1、本發明提供一種登錄方法及系統,相較于現有技術,能夠減少性能消耗,實現無感登錄,提高用戶體驗。
2、本發明提供一種登錄方法,應用于客戶端,包括:
3、確定待發送的接口請求,所述接口請求需要攜帶token令牌;
4、在本地存儲中未存儲所述token令牌的情況下,將所述接口請求移入預先創建的請求隊列中,所述請求隊列包括多個所述接口請求;
5、在全局鎖為未鎖定狀態的情況下,根據所述請求隊列中的第一個接口請求從所述服務端獲取所述token令牌,并設置所述全局鎖為鎖定狀態,以使所述服務端根據所述token令牌返回請求成功的消息,所述token令牌為有效令牌;
6、接收所述服務端返回的請求成功的消息,并根據所述請求成功的消息進行登錄。
7、可選地,根據所述請求隊列中的第一個接口請求從所述服務端獲取所述token令牌之后,還包括:
8、將所述token令牌存儲至本地,并將所述token令牌廣播分發給所述所述請求隊列中其他接口請求。
9、可選地,還包括:
10、在本地存儲中存儲有所述token令牌的情況下,向所述服務端發送所述token令牌,以指示所述服務端在確定所述token令牌為有效令牌的情況下,返回請求成功的消息。
11、可選地,還包括:
12、在所述服務端確定所述token令牌不是有效令牌的情況下,清空本地存儲中所述token令牌,并向所述服務端發送二次接口請求。
13、可選地,清空本地存儲中所述token令牌之前,包括:
14、在所述服務端確定所述token令牌不是有效令牌的情況下,接收所述服務端發送的預設特定錯誤碼。
15、本發明還提供一種登錄方法,應用于服務端,包括:
16、接收客戶端發送的接口請求,所述接口請求需要攜帶token令牌;
17、在所述客戶端本地存儲中未存儲所述token令牌的情況下,向所述客戶端發送所述token令牌;所述token令牌為有效令牌,所述token令牌是在全局鎖為未鎖定狀態的情況下,客戶端根據所述請求隊列中的第一個接口請求從所述服務端獲取的,所述請求隊列包括多個所述接口請求,所述請求隊列是在所述客戶端本地存儲中未存儲所述token令牌的情況下,將所述接口請求移入預先創建的請求隊列中得到的;
18、根據所述token令牌返回請求成功的消息,以指示所述客戶端根據所述請求成功的消息進行登錄。
19、可選地,還包括:
20、在所述客戶端本地存儲中存儲有所述token令牌的情況下,接收所述token令牌;
21、在確定所述token令牌為有效令牌的情況下,返回請求成功的消息。
22、可選地,接收所述token令牌之后,還包括:
23、在確定所述token令牌不是有效令牌的情況下,向所述客戶端發送預設特定錯誤碼,以指示所述客戶端根據所述預設特定錯誤碼清空本地存儲中所述token令牌、并向所述服務端發送二次接口請求。
24、本發明還提供一種登錄系統,應用于客戶端,包括:
25、接口請求確定模塊,用于確定待發送的接口請求,所述接口請求需要攜帶token令牌;
26、接口請求轉移模塊,用于在本地存儲中未存儲所述token令牌的情況下,將所述接口請求移入預先創建的請求隊列中,所述請求隊列包括多個所述接口請求;
27、token令牌獲取模塊,用于在全局鎖為未鎖定狀態的情況下,根據所述請求隊列中的第一個接口請求從所述服務端獲取所述token令牌,并設置所述全局鎖為鎖定狀態,以使所述服務端根據所述token令牌返回請求結果,所述token令牌為有效令牌;
28、登錄模塊,用于接收所述服務端返回的請求成功的消息,并根據所述請求成功的消息進行登錄。
29、本發明還提供一種登錄系統,應用于服務端,包括:
30、接口請求接收模塊,用于接收客戶端發送的接口請求,所述接口請求需要攜帶token令牌;
31、token令牌發送模塊,用于在所述客戶端本地存儲中未存儲所述token令牌的情況下,向所述客戶端發送所述token令牌;所述token令牌為有效令牌,所述token令牌是在全局鎖為未鎖定狀態的情況下,客戶端根據所述請求隊列中的第一個接口請求從所述服務端獲取的,所述請求隊列包括多個所述接口請求,所述請求隊列是在所述客戶端本地存儲中未存儲所述token令牌的情況下,將所述接口請求移入預先創建的請求隊列中得到的;
32、請求成功返回模塊,用于根據所述token令牌返回請求成功的消息,以指示所述客戶端根據所述請求成功的消息進行登錄。
33、本發明提供的一種登錄方法及系統,該方法方法應用于客戶端,通過確定待發送的接口請求,所述接口請求需要攜帶token令牌;在本地存儲中未存儲所述token令牌的情況下,將所述接口請求移入預先創建的請求隊列中,所述請求隊列包括多個所述接口請求;在全局鎖為未鎖定狀態的情況下,根據所述請求隊列中的第一個接口請求從所述服務端獲取所述token令牌,并設置所述全局鎖為鎖定狀態,以使所述服務端根據所述token令牌返回請求成功的消息,所述token令牌為有效令牌;接收所述服務端返回的請求成功的消息,并根據所述請求成功的消息進行登錄。即本發明在全局鎖為未鎖定狀態的情況下,根據所述請求隊列中的第一個接口請求從所述服務端獲取所述token令牌,并設置所述全局鎖為鎖定狀態,如此可以避免每個接口請求都重復執行遠程獲取token令牌的方法,減少性能消耗;此外,本發明中服務端根據有效的token令牌返回請求成功的消息,從而實現無感登錄,提高用戶體驗。