servicestack 基于当前经过身份验证的用户获取资源
如果我有一个使用ServiceStack(如GetOrders)的操作:
servicestack 基于当前经过身份验证的用户获取资源,
servicestack,
servicestack,如果我有一个使用ServiceStack(如GetOrders)的操作: [Route("/orders")] public class GetOrders : IReturn<List<Order>> { } [路线(“/orders”)] 公共类GetOrders:IReturn{} 然后我在服务中使用它: [Authenticate] public class OrdersService : Service { public object Get(Get
[Route("/orders")]
public class GetOrders : IReturn<List<Order>> { }
[路线(“/orders”)]
公共类GetOrders:IReturn{}
然后我在服务中使用它:
[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;
}
}
[验证]
公共类OrdersService:服务
{
公共对象获取(GetOrders请求)
{
var dbOrders=Db.Select().ToList();
//我想要的是只获取发出请求的用户的订单
//var dbOrders=Db.Select()。其中(x=>x.UserId==?).ToList();
退回订单;
}
}
假设我的
Order
实体有一个名为UserId
的属性,我如何访问当前登录的用户,然后映射到UserId
并从我的数据库中仅选择这些订单?您可以通过SessionAs
方法访问键入的用户会话,例如:
[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;
}
}
[验证]
公共类OrdersService:服务
{
公共对象获取(GetOrders请求)
{
var userSession=base.SessionAs();
var userId=int.Parse(userSession.UserAuthId);
var dbOrders=Db.Select(x=>x.UserId==UserId);
退回订单;
}
}