我有多個登錄提供程序可用。我可以使用外部帳戶登錄或使用表單身份驗證。一切正常。 我將用戶重定向到HomePage,現在我想知道使用了哪個登錄提供程序。OWIN MVC - 多登錄提供程序,當前登錄提供者
是否有可能在控制器中找到哪個loginprovider被使用?
感謝您的幫助!
我有多個登錄提供程序可用。我可以使用外部帳戶登錄或使用表單身份驗證。一切正常。 我將用戶重定向到HomePage,現在我想知道使用了哪個登錄提供程序。OWIN MVC - 多登錄提供程序,當前登錄提供者
是否有可能在控制器中找到哪個loginprovider被使用?
感謝您的幫助!
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
string provider = loginInfo.Login.LoginProvider; // Facebook, Google, Twitter, Microsoft...
這隻適用於ExternalLoginCallback請求。在其他請求externallogininfo爲空,所以我不能在任何控制器操作中使用它。 –
@PiotrDory如果您捕獲ExternalLoginCallback中的登錄信息,並且可以將其存儲在Session中,稍後可以訪問它。我沒有嘗試過,但聽起來似乎是合理的。 – jrummell
這還不夠:/可以用已經登錄的用戶開始新的會話 –
我得到了這個工作,雖然它不是在所有情況下都能工作的東西。
這是我在HomeController的功能使用的代碼:
// get the provider name
var authCtx = HttpContext.GetOwinContext();
var usrMgr = authCtx.GetUserManager<ApplicationUserManager>();
var user = usrMgr.FindByName(HttpContext.User.Identity.Name);
var extLoginInfo = usrMgr.GetLogins(user.Id).FirstOrDefault();
var loginProvider = extLoginInfo.LoginProvider.ToLower();
主要的問題在這裏的是,我沒有得到該用戶當前登錄與實際登錄提供。我只是獲得與此用戶關聯的第一個登錄提供程序(在我的情況下恰好是相同的,所以它的工作原理)。
很好找到一種方法來獲取用戶當前登錄的實際提供者。
爲什麼你想知道登錄提供程序? – jrummell
我有異常登錄,其中我想包括登錄時使用哪個登錄提供程序的信息。另外就像在當前登錄的用戶附近顯示圖標圖標 –