2015-10-20 3 views
1

У меня есть несколько провайдеров входа в систему. Я могу войти в систему с внешней учетной записью или с помощью форм auth. Все работает нормально. Я перенаправляю пользователя на главную страницу, и теперь мне хотелось бы узнать, какой из пользователей был использован.OWIN MVC - Несколько LoginProviders, Current LoginProvider

Есть ли возможность узнать в контроллере, в котором использовался loginvvider?

Спасибо за помощь!

+0

Зачем вам нужен провайдер входа? – jrummell

+0

У меня есть журнал исключения, в который я хочу включить информацию о том, какой логин был использован во время входа в систему. Также хотел бы показать значок со значением рядом с текущим зарегистрированным пользователем –

ответ

0
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); 
string provider = loginInfo.Login.LoginProvider; // Facebook, Google, Twitter, Microsoft... 
+0

Это будет работать только с запросом ExternalLoginCallback. В других запросах externallogininfo имеет значение null, поэтому я не могу использовать его в любом действии контроллера. –

+0

@PiotrDory, если вы записываете информацию для входа в ExternalLoginCallback и можете сохранить ее в сеансе, вы можете получить к ней доступ позже. Я не пробовал это, но это звучит правдоподобно. – jrummell

+0

Этого недостаточно:/Можно запустить новый сеанс с уже зарегистрированным пользователем –

0

Я получил эту работу, хотя это не то, что будет работать во всех случаях.

Вот код, который я использовал в функции 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(); 

Основной проблемой здесь является то, что я не получаю фактического поставщика входа в систему, что пользователь в данный момент вошедшего в с. Я просто получаю первый логин, связанный с этим пользователем (который в моем случае бывает таким же, поэтому он работает).

Было бы здорово найти способ получить фактического поставщика, с которым пользователь в настоящий момент вошел в систему.

 Смежные вопросы

  • Нет связанных вопросов^_^