servicestack,Authentication,servicestack" /> servicestack,Authentication,servicestack" />

Authentication 使用ServiceStack AuthProvider,如何将经过身份验证的用户限制为其自己的资源?

Authentication 使用ServiceStack AuthProvider,如何将经过身份验证的用户限制为其自己的资源?,authentication,servicestack,Authentication,servicestack,我正在为REST服务使用ServiceStack凭据AuthProvider,身份验证过程工作正常,但我需要将经过身份验证的用户限制在数据库中自己的资源内 例如,如果用户(id=1)已登录,则显然可以通过/api/users/1/orders检索她的订单。现在,如何通过/api/users/2/orders向该用户抛出“not authenticated”消息?我不会将用户Id作为路由参数,而是将其更改为api/users/orders或api/orders,然后为当前经过身份验证的用户获取订单

我正在为REST服务使用ServiceStack凭据AuthProvider,身份验证过程工作正常,但我需要将经过身份验证的用户限制在数据库中自己的资源内


例如,如果用户(id=1)已登录,则显然可以通过/api/users/1/orders检索她的订单。现在,如何通过/api/users/2/orders向该用户抛出“not authenticated”消息?

我不会将用户Id作为路由参数,而是将其更改为
api/users/orders
api/orders
,然后为当前经过身份验证的用户获取订单,如下所示:

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

感谢您的回复,但我忘了提及此应用程序是一个多租户应用程序,租户是拥有自己用户、订单等的公司。因此,CompanyId在这里扮演主要角色,一旦用户成功登录,我的会话中将有CompanyId。怎样才能更干燥?想法?有没有找到答案?我需要根据请求中的数据对角色进行身份验证。在我的情况下,我与国家打交道,而不是与公司打交道,一个用户可以访问多个国家。