2013-11-24 3 views
2

Я использую AuthProvider Credentials ServiceStack для службы REST, и процесс аутентификации работает идеально, но мне нужно ограничить аутентифицированного пользователя собственными ресурсами в базе данных.Использование ServiceStack AuthProvider, как ограничить аутентифицированного пользователя собственными ресурсами?

Например, если пользователь (id = 1) зарегистрирован, она, очевидно, может получить ее заказы через/api/users/1/orders. Теперь, как этот пользователь может быть отправлен «не аутентифицированным» сообщением через/api/users/2/orders?

+0

когда-нибудь найти ответ на это? У меня есть нечто подобное, когда мне нужно аутентифицировать роль, основанную на данных в запросе. В моем случае я имею дело со странами, не являющимися компаниями, и у пользователя может быть доступ к более чем одной стране. – Seer

ответ

1

Я бы не иметь идентификатор пользователя в качестве параметра маршрута, вместо этого я хотел бы изменить его 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; 
    } 
} 
+0

Благодарим за отзыв, но я забыл упомянуть, что это приложение является многопользовательским, а арендаторы - это компании со своими собственными пользователями, заказы и т. Д., Поэтому главная роль здесь принадлежит CompanyId, и у меня есть CompanyId на моей сессии один раз пользователь успешно вошел. Как быть более СУХОЙ? Мысли? – user2958608

Смежные вопросы