所以我的web apis很大程度上取決於用戶授權的當前時間。問題是用戶的當前時間幾乎總是與服務器的日期時間不同。想知道是否有人可以給我一個關於如何正確處理它的建議。.net MVC應用程序服務器時間不同
我的第一個解決方案是到0400 GMT時,每次轉換。但似乎我必須存儲用戶的位置或類似的東西,我也不確定如何去做。
謝謝!
所以我的web apis很大程度上取決於用戶授權的當前時間。問題是用戶的當前時間幾乎總是與服務器的日期時間不同。想知道是否有人可以給我一個關於如何正確處理它的建議。.net MVC應用程序服務器時間不同
我的第一個解決方案是到0400 GMT時,每次轉換。但似乎我必須存儲用戶的位置或類似的東西,我也不確定如何去做。
謝謝!
歡迎本地化的
精彩
可怕的世界。沒有簡單的方法來以可靠的方式處理這種類型的東西。它需要工作和批次的測試。首先,您應該立即轉儲.NET內置的DateTime本地化。使用類似NodaTime。它會讓你的生活變得更加簡單(特別是在測試你的本地化代碼的時候)。
你將擁有的主要問題是,有沒有可靠的方法來獲取用戶的時區的服務器端。您有兩種選擇:
只要用戶明確選擇其時區並將其存儲在其配置文件中以供將來使用。這顯然是最可靠的方法,但這意味着您需要強制用戶輸入此信息,或者如果缺少計劃,請使用默認計劃。
使用JavaScript(you can see the methodology here)。實質上,你可以使用JS來設置隱藏字段的值或通過AJAX發送信息。很明顯,用戶的客戶端需要JS支持並且支持這種支持(在99.99%的情況下相當安全),但仍然有屏幕閱讀器,並且沒有JS支持,並且一些用戶更喜歡禁用JS問題)。
但是,通常在授權中使用時間戳,反正只有服務器時間很重要。我知道的唯一用途是創建摘要以防止重放攻擊,但時間戳將根據服務器時間創建,然後根據服務器時間進行驗證。你的用例有什麼不同?
好吧,我將時間戳附加到另一個簽名並使用密鑰對其進行加密。順便說一句,這個信息將來自iphone應用程序。但是,是的,要回答你的問題,這將是防止重播攻擊。實際上,我每次在使用應用程序時都會問他們。或者,也許得到他們的位置或東西,然後決定呢?思考? – gdubs
Moment.js是一個偉大的JavaScript庫,處理時區和其他日期時間功能。也許值得一瞧。 – Rob
我的問題是,我需要這個iPhone應用程序 – gdubs
一種方法是始終保存日期時間值作爲UTC並將它們發送到客戶端/從客戶端作爲UTC。然後在呈現給用戶時在客戶端上轉換它們。 iOS api應該能夠進行轉換。 – Rob