2013-04-02 42 views
4

所以,我對localhost/auth/credential運行調試與身份驗證功能,併成功登錄後與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,用戶名= NULL在哪裏預期UserName = admin。我堅持了幾個小時,無法弄清楚我做錯了什麼。請幫忙?

UPDATE ============================================ ==================

當我登錄,瀏覽器接收的:

X-UAId=1 

然後瀏覽器發送:

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

作爲圖片顯示:

網址:本地主機/認證/證書格式= JSON

enter image description here

然後我訪問會話服務:

網址:本地主機/用戶/會話

enter image description here

正如你所看到的,我正在以SessionId的身份提取ss-id。我與管理員登錄,用戶名管理=是預期,但我得到用戶名= NULL。爲什麼?

enter image description here

+1

可能是一個愚蠢的問題,但是你配置[緩存客戶端(https://github.com/ServiceStack/ServiceStack/wiki/Caching)?我不確定是否需要它,因爲我一直都在我的SS應用程序中。 –

+0

您是否正在使用瀏覽器或Fiddler/REST Console向URL發送請求?它沒有出現對http:// localhost:2000/user/session的請求,從您的緩存中請求到/ auth/credential的會話cookie仍然存在。 – paaschpa

+0

@Eli Gassert,是的。容器。註冊(新的MemcachedClientCache(new [] {「127.0.0.0:11211」})); – Tom

回答

3

固定它!

感謝禮Gassert。根據他的提示,我懷疑MemcachedClient未正確設置。所以我把它切換到了簡單的MemoryCacheClient

瞬間一切現在正常工作。因爲MemcachedClient不記得任何東西。所以根本沒有會話。

+0

我有類似的情況,但使用FacebookAuthProvider,我已經將MemoryCacheClient添加到應用主機配置,但仍然不適合我,你有什麼想法嗎? http://stackoverflow.com/questions/18200419/servicestack-iauthsession-empty-after-authentication-with-facebookauthprovider –

+0

我解決了,謝謝! –