2013-10-01 33 views
1

如果非要使用ServiceStack如GetOrders操作:獲取基於資源當前已驗證用戶

[Route("/orders")] 
public class GetOrders : IReturn<List<Order>> { } 

然後我用這一個服務:

[Authenticate] 
public class OrdersService : Service 
{ 
    public object Get(GetOrders request) 
    { 
     var dbOrders = Db.Select<Order>().ToList(); 
     // What I want is to only get orders of the user making the request 
     // var dbOrders = Db.Select<Order>().Where(x=>x.UserId == ??).ToList(); 
     return dbOrders; 
    } 
} 

假設我Order實體都有一個屬性叫做UserId,我如何訪問當前登錄的用戶,然後我可以映射到UserId並僅從我的數據庫中選擇那些訂單?

回答

3

您可以通過SessionAs<T>方法,e.g訪問您鍵入UserSession:

[Authenticate] 
public class OrdersService : Service 
{ 
    public object Get(GetOrders request) 
    { 
     var userSession = base.SessionAs<AuthUserSession>(); 
     var userId = int.Parse(userSession.UserAuthId); 
     var dbOrders = Db.Select<Order>(x => x.UserId == userId); 
     return dbOrders; 
    } 
} 
相關問題