Могу ли я использовать token_authenticable (из Devise) на другой модели, чем моя основная модель аутентификации в Rails 3? - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть модель User, которой управляет Devise - то есть все пользователи имеют электронную почту addy / username / pass и т. д. Если пользователь входит в систему, на основании своих разрешений он получает доступ к разные вещи. Это отлично работает.

Но у меня есть модель Client, которой я хотел бы предоставить токен, чтобы они могли получить доступ к одному конкретному действию на одном конкретном контроллере.

В идеале я хотел бы создать токен для клиента john.brown@abc.com (имейте в виду, что это не User.email, а Client.email), чтобы они могли получить доступ к действию compare для моего Контроллер stages, у которого stage имеет идентификатор 7.

Я не хочу, чтобы они имели доступ к любым другим этапам, кроме id7, и я не хочу, чтобы им приходилось входить в систему. То есть, когда они получают доступ к этому конкретному URL (например, myapp.com/stages/7/compare?token={unique token generated by devise}) они могут видеть это. Но они не могут взять этот жетон и перейти к stages/8/compare, например.

Могу ли я сделать это с помощью Devise?

Если так, то как?

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Цель стратегии TokenAuthenticatable Devise состоит в том, чтобы зарегистрировать пользователя , которым Devise управляет с помощью токена.Итак, devise уже должен управлять моделью, в которую вы входите, и в вашем приложении похоже, что Devise не управляет Client.Я не думаю, что это поможет вам в этом случае.

0 голосов
/ 04 апреля 2011

Devise делает в основном аутентификацию. Для чего нужен плагин авторизации. Попробуйте использовать cancan, например (https://github.com/ryanb/cancan).). Это позволит вам предоставлять «роли» вашим пользователям и разрешать им выполнять (или не выполнять) определенные действия.

Также доступен Railscast: http://railscasts.com/episodes/192-authorization-with-cancan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...