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

时间:2013-11-24 22:05:15

标签: authentication servicestack

我正在使用ServiceStack Credentials AuthProvider进行REST服务,并且身份验证过程非常完美,但我需要将经过身份验证的用户限制在数据库中自己的资源。

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

1 个答案:

答案 0 :(得分:1)

我不会将用户ID作为路由参数,而是将其更改为api/users/ordersapi/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;
    }   
}