0

設置RequireConfirmedEmail在身份選項在簽約用戶的結果返回SignInResult.NotAllowed,它在CanSignInAsyncRequireConfirmedEmail正常登錄,但沒有外部登錄(身份核)

if (Options.SignIn.RequireConfirmedEmail && !(await UserManager.IsEmailConfirmedAsync(user))) 

測試通過,但這個適用於外部登錄過,這是我們希望只有正常登錄的行爲

我們已經知道我們可以擴展SignInManager<TUser>但我們認爲也許有人有更簡單更優雅的解決方案,任何人都可以?

回答

1

最簡單的辦法是設置EmailConfirmed = true當您創建外部用戶,就像在默認的模板方法ExternalLoginConfirmation

var user = new ApplicationUser { UserName = model.Email, 
           Email = model.Email, 
           EmailConfirmed = true }; 
+0

我接受它缺乏一個更好的答案,但它只是不正確(至少對於我們的應用程序將未確認的用戶標記爲已確認),但是我們將使其工作,因爲 – mynameisjeff

+1

不應該認爲外部登錄(由外部提供商確認)? –

+0

是的,但在理論上,因爲人們可能無法再訪問此電子郵件了,只需要一個愚蠢的舉動就可以將自己鎖定在自己的帳戶之外(如2FA,或從賬戶中刪除外部登錄),但理論上是(即使我記得你可以創建一個Facebook帳戶並在確認之前登錄,但不確定是否仍有可能,如果允許外部登錄) – mynameisjeff