2013-10-01 1 views
1

나는 그런 GetOrders 같은 ServiceStack를 사용하여 작업하는 경우 :자원에 기반하기 현재 인증 된 사용자

[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> 방법, 예컨대 통해 입력 된 사용자 세션에 액세스 할 수 있습니다 :

[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; 
    } 
} 
관련 문제