我正在使用ServiceStack Credentials AuthProvider进行REST服务,并且身份验证过程非常完美,但我需要将经过身份验证的用户限制在数据库中自己的资源。
例如,如果用户(id = 1)已登录,她显然可以通过/ api / users / 1 / orders检索她的订单。现在,该用户如何通过/ api / users / 2 / orders抛出“未经过身份验证”的消息?
答案 0 :(得分:1)
我不会将用户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;
}
}