2013-10-01 30 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; 
    } 
} 
相关问题