Asp.net-Mvc
UserManager VerifyUserTokenAsync 總是 False
我正在像這樣生成一個使用者令牌
public async Task GenerateCode() { var code = await UserManager.GenerateUserTokenAsync("heymega", new Guid("16139fcd-7ae0-449c-ad1c-f568bbe46744")); }然後我通過單獨的請求將相同的令牌傳遞給另一個動作
public async Task ValidateCode(string code) { var valid = await UserManager.VerifyUserTokenAsync(new Guid("16139fcd-7ae0-449c-ad1c-f568bbe46744"), "heymega", code); //Returns False }但是,該
VerifyUserTokenAsync方法的響應總是錯誤的。如果我要生成程式碼並在同一操作中進行驗證
public async Task GenerateCode() { var code = await UserManager.GenerateUserTokenAsync("heymega", new Guid("16139fcd-7ae0-449c-ad1c-f568bbe46744")); var valid = await UserManager.VerifyUserTokenAsync(new Guid("16139fcd-7ae0-449c-ad1c-f568bbe46744"), "heymega", code); //Returns True }它返回真。
為什麼驗證方法不能在單獨的請求中驗證程式碼?我錯過了一些明顯的東西嗎?
在把頭髮拉了幾個小時後,我終於想到了這一點。您需要對程式碼進行 URL 編碼,我決定為此使用 HttpUtility 類。
HttpUtility.UrlEncode(code);在驗證程式碼時,您不需要對程式碼進行 URL 解碼。
剛剛在這個問題上燒了 2 天,這可能是您發生這種情況的另一個原因。
在您的 Startup.cs - ConfigureServices(IServiceCollection services) 方法中,確保:
services.AddAuthentication出現在之前
services.AddIdentity否則對 VerifyUserTokenAsync 的呼叫將始終返回 false