2013-08-13 2 views
1

Я пытаюсь получить данные пользователя через IAuthSession после делать аутентификацию с Facebook, когда я пытаюсь получить пользователь с request.getSession (истина), которая возвращает AuthUserSession (реализует IAuthSession) Я получаю частичное подмножество данных, как следующее:ServiceStack IAuthSession пустого после аутентификации с FacebookAuthProvider

IAuthSession

Я пытаюсь использовать его в сервисный метод

[ClientCanSwapTemplates] 
     [DefaultView("dashboard")] 
     public DashboardResponse Get(FacebookRequest userRequest) 
     { 
      var user1 = Request.GetSession(true); 
      return new DashboardResponse(); 

     } 

Я добавил Поставщик AUTH моего apphost следующим образом:

Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { 
       new FacebookAuthProvider(appSettings), 
       new TwitterAuthProvider(appSettings), 
       new BasicAuthProvider(appSettings), 
       new GoogleOpenIdOAuthProvider(appSettings), 
       new LinkedInAuthProvider(appSettings), 
       new CredentialsAuthProvider() 
      })); 

Насколько я знаю facebookAuthProvider должен заполнить IAuthSession со следующей информацией:

userSession.FacebookUserId = tokens.UserId ?? userSession.FacebookUserId; 
userSession.FacebookUserName = tokens.UserName ?? userSession.FacebookUserName; 
userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName; 
userSession.FirstName = tokens.FirstName ?? userSession.FirstName; 
userSession.LastName = tokens.LastName ?? userSession.LastName; 
userSession.PrimaryEmail = tokens.Email ?? userSession.PrimaryEmail ?? userSession.Email; 

какого шаг мне не хватает?

ответ

2

Я был в похожей ситуации вроде этого issue на основании ответа, который я решил попробовать, и он сработал.

единственное различие заключается в том, что я использую простую форсунку, и вы должны рассмотреть, чтобы зарегистрировать эту зависимость, как Singleton легкий путь для меня, чтобы зарегистрировать это было так:

simpleInjectorContainer.RegisterSingle<ICacheClient>(()=>new MemoryCacheClient()); 
Смежные вопросы