servicestack 基于当前经过身份验证的用户获取资源,servicestack,servicestack" /> servicestack 基于当前经过身份验证的用户获取资源,servicestack,servicestack" />

servicestack 基于当前经过身份验证的用户获取资源

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

如果我有一个使用ServiceStack(如GetOrders)的操作:

[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);
退回订单;
}   
}