2013-10-01 6 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

Вы можете получить доступ к вашей типизированной UserSession через 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; 
    } 
} 
Смежные вопросы