Рельсы 4 Авторизация Gem [Закрыто] -- ruby-on-rails-4 поле с участием authorization пол Связанный проблема

Rails 4 authorization gem [closed]


10
vote

проблема

русский
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»>
закрыт. Этот вопрос не соответствует Рекомендациям переполнения стека . В настоящее время он не принимает ответы.

<Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 5.6A6.31 6.31 0 002.39 5.75C.49.39.76.93.76 1.5V.24C0 1.07.89 1.9 1.92 1.92.75C1.04 0 1.92-.83 1.92-1.9v-. 2C0-.6.26-1.15.7-1.6.26-1.15.7-1.48A6.32 6.32 0 0015 6.37ZM4.03 5.85A4.49 4.49 0 018 2.02A4.48 4,48 0 015 4.36 4.3 4,3 0 01-1.72 3.44C-01-1.74-1.5 1.9- 1.5 3.08V.1H7.2V-.14C0-1.23-.6-2.34-1.3-1.32.32-1.53-3.07A4.32.32.32 0 01-1.64-3.94ZM10 18A1 1 0 000-2х7А1 1 0 100 2H3Z ">

Хотите улучшить этот вопрос? Обновить вопрос, так что это на тему для переполнения стека.

Закрыто 4 года назад .

Улучшить этот вопрос .

Я ищу авторизацию GEM для рельсов 4. Прежде чем я использовал Канкан, но это выглядит устаревшим в наши дни ...

Я нашел the_role здесь https://github.com/the-teacher/the_role Это почти то, что я хочу, но имеет несколько неприятностей. Может быть, похожие драгоценные камни существуют? Мне нужны роли, храните роли в базе данных и ассоциации действий с правилами. Это намотано, если GEM сотрудничает с Bootstrap.

P.S. Для аутентификации я использую разработку.

Английский оригинал

I am looking an authorization gem for rails 4. Before I used cancan, but it looks outdated nowadays...

I found the_role here https://github.com/the-teacher/the_role It is nearly what I want, but has a few annoying issues. Maybe similar gems exist? I need roles, store roles in database and association actions with rules. It wound be great if gem cooperate with bootstrap.

P.S. For authentication I use devise.

</div
     
 
 

Список ответов

30
 
vote

<сильный> Cancancan

Cancan был популярным GEM для авторизации, разработанной Ryan Bates (наиболее известный для Railscasts) и заброшен до к выпуску рельсов 4.0. Благодаря своей популярности, основанные на сообществе Cancancan Project поддерживают обновленную версию CANCAN. Cancan предоставляет DSL (конкретный домен язык), который выделяет всю логику авторизации в одном классе способностей.

<Сильный> Pundit

the Pundit GEM набирает популярность для авторизации рельсов. Pundit - это система авторизации, которая использует простые объекты Ruby для правил доступа. Pundit использует папку с именем App / Policies / , содержащие простые рубины, которые реализуют правила доступа.

Cancancan или Pundit или?

Как приложение растет в сложности, класс способностей канкан может выращивать громоздко. Кроме того, каждый запрос на авторизацию требует оценки класса полномочий полного канкана, добавляя накладные расходы производительности. Pundit также предлагает преимущество правил сегрегации доступа в центральное расположение, сохраняя контроллеры худым. Объекты политики Pundit являются легкими, добавляя логику авторизации без столько накладных расходов, сколько канкан.

<Сильная> простая роль авторизации

с рельсами 4.1, вы можете реализовать роль авторизации с использованием Активная запись Enum Вы можете использовать Cancancan или Pundit, чтобы держать контроллеры худых, если ваши правила доступа являются сложными, но для простых требований вас, возможно, не понадобится Cancancan или Pundit.

Я написал статью на Авторизация рельсов Это входит в более подробную информацию, сравнивая канканкан и Pundit и простое разрешение на роль.

 

CanCanCan

CanCan was a popular gem for authorization developed by Ryan Bates (best known for RailsCasts) and abandoned prior to the release of Rails 4.0. Due to its popularity, the community-based CanCanCan project maintains an updated version of CanCan. CanCan provides a DSL (domain-specific language) that isolates all authorization logic in a single Ability class.

Pundit

The Pundit gem is gaining in popularity for Rails authorization. Pundit is an authorization system that uses simple Ruby objects for access rules. Pundit uses a folder named app/policies/ containing plain Ruby objects that implement access rules.

CanCanCan or Pundit or ?

As an application grows in complexity, the CanCan Ability class can grow unwieldy. Also, every authorization request requires evaluation of the full CanCan Ability class, adding performance overhead. Pundit also offers the advantage of segregating access rules into a central location, keeping controllers skinny. Pundit policy objects are lightweight, adding authorization logic without as much overhead as CanCan.

Simple Role-Based Authorization

With Rails 4.1, you can implement role-based authorization using Active Record Enum. You can use CanCanCan or Pundit to keep controllers skinny if your access rules are complex but for simple requirements, you may not need CanCanCan or Pundit.

I've written an article on Rails Authorization that goes into more detail, comparing CanCanCan and Pundit and simple role-based authorization.

</div
 
 
5
 
vote

Вы должны посмотреть на большую картину даже за пределами Ruby и рассмотреть возможность авторизации. Традиционная распространенная модель является контроль доступа на основе ролей (RBAC), и это то, что большинство рамки и - в Ruby - большинство драгоценных камней.

Но если у вас есть более продвинутые сценарии, вы хотите рассмотреть возможность контроля доступа на основе атрибута и XACML, расширяемый язык разметки контроля доступа.

С XACML, вы можете реализовать разрешение на контекстную информацию, которая основана на политике. Например, вы можете писать правила, такие как:

    . Менеджеры
  • могут редактировать документы, которые они владеют
  • врачи могут рассматривать медицинскую запись пациентов, которые они назначаются на

и так далее ...

Я не знаю о любом Ruby Gem, чтобы применить XACML к вашим проектам Ruby, но природа XACML такова, что вы можете легко реализовать свои собственные авторизационные агенты (точки для исполнения). Я написал некоторые в PHP, Java, .NET и Perl.

Вам понадобится двигатель авторизации. Там есть несколько решений с открытым исходным и поставщиком, такие как Sunsexacml и Axiomatics.

Вот несколько интересных ресурсов:

    .
  • nist rbac - Официальное определение модели RBAC
  • nist abac
  • Oasis xacml
 

You should look at the bigger picture even outside Ruby and consider authorization model. The traditional prevalent model is role-based access control (RBAC) and this is what most frameworks and - in Ruby - most gems implement.

But if you have more advanced scenarios you want to consider attribute-based access control and XACML, the eXtensible Access Control Markup Language.

With XACML, you can implement context-aware authorization that is policy-based. For instance you can write rules such as:

  • managers can edit documents they own
  • doctors can view the medical record of patients they are assigned to

And so on...

I am not aware of any Ruby gem to apply XACML to your Ruby projects but the nature of XACML is such that you can easily implement your own authorization agents (enforcement points). I've written some in PHP, Java, .NET, and Perl.

You'll need an authorization engine. There are several open-source and vendor solutions out there such as SunXACML and Axiomatics.

Here are some interesting resources:

  • NIST RBAC - the official definition of the RBAC Model
  • NIST ABAC
  • OASIS XACML
</div
 
 
       
       
3
 
vote

cancancan - это новая версия может:

https://github.com/cancancommunity/cancancan

 

Cancancan is the new version of can can:

https://github.com/CanCanCommunity/cancancan

</div
 
 
2
 
vote

Действие Access отлично работает с Rails 4, имеет очень четкий синтаксис, и это действительно легкий.

Это сводится к этому:

 <код> class ArticlesController < ApplicationController   let :admin, :all   let :user, [:index, :show]    # ... end   

Это автоматически заблокирует контроллер, что позволяет получать доступ к каждому действию, пользователям только для отображения или индексных статей, и кто-либо другой будет отклонен и перенаправлен с оповещением.

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

Для грануляционного управления вы можете использовать <код> not_authorized! внутри действий, чтобы проверить данные от данных из базы данных или все, что вам нужно.

Это полностью независимый системы аутентификации, и она может работать даже без <кода> User моделей или предопределенных ролей. Все, что вам нужно, это установить уровень очистки для текущего запроса:

 <код> class ApplicationController < ActionController::Base   def current_clearance_level     session[:role] || :guest   end end   

Вы можете вернуть все, что требуется ваше приложение, например, <код> current_user.role , например.

Это также связывается набор удобных добавок модели, которые позволяют расширить модели пользователей и делать такие вещи, как:

 <код> <% if current_user.can? :edit, :article %>   <%= link_to 'Edit article', edit_article_path(@article) %> <% end %>   

Вот <код> :article относится к <код> ArticlesController , поэтому ссылка будет отображаться только в том случае, если текущий пользователь авторизован для доступа edit код> ArticlesController . <Сильные> пространства имен тоже поддерживаются.

Вы можете заблокировать контроллеры по умолчанию, настроить путь перенаправления и сообщения о предупреждении и т. Д. Оформить заказ Документация для большего количества.

 

Action Access works great with Rails 4, has very clear syntax and it's really lightweight.

It boils down to this:

class ArticlesController < ApplicationController   let :admin, :all   let :user, [:index, :show]    # ... end 

This will automatically lock the controller, allowing admins to access every action, users only to show or index articles and anyone else will be rejected and redirected with an alert.

Everything related to the controller is within the controller making it really modular and avoids leaving forgotten trash when you refactor.

For granular control you can use not_authorized! inside actions to check against data from the database or whatever you need.

It's completely independent of the authentication system and it can work even without User models or predefined roles. All you need is to set the clearance level for the current request:

class ApplicationController < ActionController::Base   def current_clearance_level     session[:role] || :guest   end end 

You may return whatever your app requires, like current_user.role for example.

It also bundles a set of handy model additions that allow to extend user models and do things like:

<% if current_user.can? :edit, :article %>   <%= link_to 'Edit article', edit_article_path(@article) %> <% end %> 

Here :article refers to ArticlesController, so the link will only be displayed if the current user is authorized to access the edit action in ArticlesController. Namespaces are supported too.

You can lock controllers by default, customize the redirection path and the alert message, etc. Checkout the documentation for more.

</div
 
 
0
 
vote

pundit и cancancan - лучшие драгоценные камни для рельсов 4

 

Pundit and Cancancan are the best gems for rails 4

</div
 
 

Связанный проблема

6  Интерфейс чата HUBSPOT отсутствует в Turbolinks посещаемой странице, но работает на полную страницу обновления  ( Hubspot chat interface is missing in turbolinks visited page but working for fu ) 
Я хочу интеградать интерфейс чата HUBSPOT в моих рельсах 4 + Turbolinks. Я настроил Mange Tag Tag Manager, чтобы показать интерфейс Chat Chat в каждой страниц...

1  Эмбер-кли активы не загружая рельсы 4  ( Ember cli assets not loading rails 4 ) 
<Р> я страница запрашивал "активы / Ember / scalus-services.js. Эти активы не существует, так как активы построены Ember CLI с отпечатком MD5 <Р> то есть - "Э...

0  Рельсы облако применение  ( Rails cloud application ) 
Я развернул это приложение к OpenShift: http://actibites-uniongr.rhcloud.com/pages/view -Демо случайно, при посещении сайта я получаю некоторые действ...

0  Фабричный метод Angularjs не найден в проекте Rails  ( Angularjs factory method not found in rails project ) 
В настоящее время я работаю над этим учебным пособием Angularjs: научиться строить современные веб-приложения с угловыми и рельсами https: //thekekster.io/an...

1  Как обрабатывать STI и создайте связанные модели моделей автоматически?  ( How to handle sti and build related models automatically ) 
Я строю CMS, и я хочу назначить на странице много разных содержимого с общим положением в сетке и встроенных моделях, таких как плагины и фрагменты HTML. Как ...

1  Валидация Rails-4 говорит, что поле не может быть пустым, даже если поле не пусто  ( Rails 4 validation says field cant be blank even though the field is not blank ) 
У меня есть модель Activerecord с помощью Validates: Body, Наличие: True . Когда форма заполнена и отправлена, я получаю {: body = & gt; ["не может быть пус...

2  Сфера действия и метод экземпляра  ( Scope and an instance method ) 
У меня есть модель <код> class User < ActiveRecord::Base has_many :articles def good_publisher? self.articles.size > 50 end scope :good_publis...

38  Рельсы 4 - отвечать только на JSON, а не HTML  ( Rails 4 respond only to json and not html ) 
Я пытаюсь построить API в Rails 4, и у меня есть проблема, в которой рельсы возвращают ошибку 500 вместо 406 при использовании respond_to :json и пытаются п...

0  COSITORWAVE, не используя default_url, когда версия отсутствует  ( Carrierwave not utilizing default url when version not present ) 
По сути, Photo_URL (TIGHT) отображает URL предназначенный для большого пальца большого пальца, даже если файл не существует физически. <код> # encoding: utf...

0  Rails Count Количество всех загруженных файлов Coar Colorswave  ( Rails count number of all carrierwave uploaded files ) 
Я работаю над проектом Rails, используя Carrierwave для загрузки файлов и изображений. Мне просто нужен способ подсчитывать количество файлов, загруженных на ...

6  Тип содержимого «Приложение / JSON» не требуется в Rails  ( Content type application json not required in rails ) 
У меня есть конечная точка API в Rails, что по умолчанию, если вы не устанавливаете какой-либо заголовок типа содержимого параметров в <код> application/x-w...

4  Преобразование строки в биты в Ruby, добавив 1 бит и преобразование обратно в ASCII  ( Converting a string to bits in ruby adding 1 bit and converting back to ascii ) 
Я пишу генератор Ruby UID, и мне нужно создать уникальные идентификаторы в постепенном порядке. Уникальные идентификаторы - это строки, которые варьируются от...

5  Производственный вход для базы данных Rails.yml Файл на Heroku  ( Production entry for rails database yml file on heroku ) 
Просто смотрите на мою базу данных .yml Файл для моих Rails 4 App и заметили, что нет никаких настроек для производственной базы данных - только тестовые и ра...

6  Не может загрузить такой файл UGLier  ( Cannot load such file uglifier ) 
Я продолжаю получать эту ошибку: <код> throw Error("LoadError:cannot load such file -- uglifier (in /var/www/dev/app) Я не могу справиться с этой ошиб...

-3  Что я пропускаю в контроллере?  ( What am i missing in the controller ) 
Этот класс Ruby бросает мне, что пользователь ошибки - это имя таблицы, поэтому я не знаю, почему он говорит, что есть ошибка в причинах метода индекса, если ...

Связанный проблема

6  Интерфейс чата HUBSPOT отсутствует в Turbolinks посещаемой странице, но работает на полную страницу обновления 
1  Эмбер-кли активы не загружая рельсы 4 
0  Рельсы облако применение 
0  Фабричный метод Angularjs не найден в проекте Rails 
1  Как обрабатывать STI и создайте связанные модели моделей автоматически? 
1  Валидация Rails-4 говорит, что поле не может быть пустым, даже если поле не пусто 
2  Сфера действия и метод экземпляра 
38  Рельсы 4 - отвечать только на JSON, а не HTML 
0  COSITORWAVE, не используя default_url, когда версия отсутствует 
0  Rails Count Количество всех загруженных файлов Coar Colorswave 
6  Тип содержимого «Приложение / JSON» не требуется в Rails 
4  Преобразование строки в биты в Ruby, добавив 1 бит и преобразование обратно в ASCII 
5  Производственный вход для базы данных Rails.yml Файл на Heroku 
6  Не может загрузить такой файл UGLier 
-3  Что я пропускаю в контроллере? 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.