2013-04-02 3 views
4

Итак, я запускаю debug на localhost/auth/credential с функцией auth и успешно вошел в систему с user=admin, pass=pass, rememberMe=true. Я получил ответ Json UserName=admin, SessionId=1, настолько хороший.ServiceStack IAuthSession после входа в систему

Тогда у меня есть SessionService проверить мою текущую сессию:

[Route("user/session")] 
public class Session { 
} 
public class SessionResponse { 
    public ResponseStatus ResponseStatus { get; set; } 
    public string UserName { get; set; } 
    public string SessionId { get; set; } 
} 
class SessionService : Service { 
    public dynamic Get(Session req) { 
     IAuthSession session = this.GetSession(); 
     return new SessionResponse() { 
      SessionId = session.Id, 
      UserName = session.UserName, 
     }; 
    } 
} 

Но когда я иду посетить:

localhost/user/session

Я получил SessionId = K16UMnr2eBXiIFUwAod, UserName = нуль где я ожидаемое имя пользователя = admin. Я застрял с этим часами, не могу понять, что я делаю неправильно. Пожалуйста помоги?

ОБНОВЛЕНИЕ ========================================== ==================

Когда я войти в систему, браузер получил:

X-UAId=1 

тогда браузер послал:

ss-pid=zV7OOe2sP8hwlo8rR0EZ 
ss-id=K16UMnr2eBXiIFUwAod 
X-UAId=1 

как показаны снимки:

URL: локальный// учетные данные формата AUTH = JSON

enter image description here

Затем я посещаю службы сеанса:

URL: локальный/пользователь/сеанс

enter image description here

Как вы можете видеть, я собираю ss-id как SessionId. Я вошел в систему с администратором, UserName = admin ожидается, но я получил UserName = null. Почему это?

enter image description here

+1

Возможно, это глупый вопрос, но вы настроили [клиент кэша] (https://github.com/ServiceStack/ServiceStack/wiki/Caching)? Я не уверен, что это требуется, поскольку я всегда использую его в своих SS-приложениях. –

+0

Вы используете браузер или что-то вроде Fiddler/REST Console для запросов на URL? Не появляется запрос на http: // localhost: 2000/user/session имеет файл cookie сеанса из вашего запроса в/auth/credential, сохраненный в вашем кеше. – paaschpa

+0

@ Эли Гассерт, да. контейнер.Зарегистрировать (новый MemcachedClientCache (новый [] {"127.0.0.0:11211"})); – Tom

ответ

3

Fixed это !!

Thank Eli Gassert. Следуя его намеку, я подозреваю, что MemcachedClient не был настроен должным образом. Поэтому я переключил его на простой MemoryCacheClient.

Все мгновенно работает правильно. Потому что MemcachedClient ничего не помнил. Таким образом, сеанса вообще не было.

+0

У меня такая же ситуация, но с использованием FacebookAuthProvider я добавил MemoryCacheClient в конфигурацию хоста приложения, но до сих пор не работает для меня, есть ли у вас какие-либо идеи? http://stackoverflow.com/questions/18200419/servicestack-iauthsession-empty-after-authentication-with-facebookauthprovider –

+0

Я решил, что спасибо! –

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