Ein Memo bei der Untersuchung, wie Rollen und Zugriffsrechte in Rails verwaltet werden
・ Cancancan ・ Pundit ・ Banken
Die Einstellungsdatei scheint einfach zu sein und Experten oder Banken, die mit Ruby geschrieben werden können, scheinen einfach zu sein. In Bezug auf die Popularität, Experte. Wenn man sich jedoch die Folie von banken ansieht, scheint banken gut zu sein, weil "der Schöpfer die Unzufriedenheitspunkte von Krebs und Experten beseitigt hat".
・ Rolify
Eine Übersicht über jeden Edelstein wird später gegeben.
Von jedem Edelstein
Die folgenden Folien erleichtern das Verständnis des Unterschieds zwischen Cancancan, Pandit und Banken. https://speakerdeck.com/kyuden/rails-authorization
Das Folgende ist eine Referenz zum Vergleichen von Cancancan und Pudit. https://www.icare.jpn.com/dev_cat/pundit%E3%81%A8cancancan%E3%81%AE%E6%AF%94%E8%BC%83/
Ich sehe die Beschreibung, dass Zauberei für die Authentifizierung einfacher anzupassen ist, daher denke ich, dass Zauberei als Allzweckvorlage sicherer ist.
Damit Zertifizierung: Zauberei Autorisierung: bunken (oder pundit) Autorisierung: rolify oder original
Das Bild scheint ein allgemeiner Zweck zu sein.
Es fühlt sich ähnlich an wie die Struktur des Gunosy-Blogs unten oder wird gezogen
https://tech.gunosy.io/entry/gunosy-admin-rails
https://github.com/CanCanCommunity/cancancan
Was du tun kannst -Permissionsbedingungen können in einer Fähigkeitsklassendatei nach Modell + Aktion für jede Autorität definiert werden.
Grundlegende Verwendung -Erstelle eine Fähigkeitsklasse und schreibe sie in dein eigenes DSL. -Die grundlegende Schreibweise lautet "Name, Modell, Zustand der Aktion kann / kann nicht".
def initialize(user)
can :read, Post, public: true
if user.present?
can :read, Post, user_id: user.id
if user.admin?
can :read, Post
end
end
end
Fehler ・ Für die ursprüngliche Notation fallen Lernkosten an
Referenz-URL https://qiita.com/senou/items/e28ff548e93ad0eeed3f https://qiita.com/naoki85/items/266c8d7ab469cc6ab1fe https://qiita.com/umanoda/items/679419ce30d1996628ed https://happy-teeth.hatenablog.com/entry/2018/12/09/002905
https://github.com/varvet/pundit Was du tun kannst -Sie können für jedes Modell eine Richtlinienklasse erstellen und Berechtigungsbedingungen für den Aktionsnamen definieren. ・ Kann mit Rubin geschrieben werden. ・ * Einem Modell kann nur eine Richtlinie zugeordnet werden. Wenn auf dasselbe Modell in der API und auf dem normalen Bildschirm verwiesen wird, wird es in einer Richtliniendatei beschrieben.
Grundlegende Verwendung
Fehler -Nur eine Definition wird auf Modell + Aktionsname angewendet. Wenn das Steuerelement zwischen dem Bildschirmcontroller und dem API-Controller getrennt ist, scheint es nutzlos zu sein, wenn die Aktionsnamen dupliziert werden.
Referenz-URL https://qiita.com/senou/items/e28ff548e93ad0eeed3f
https://github.com/kyuden/banken
Was du tun kannst Die Einschränkung, dass "das Modell und die Richtlinie eins zu eins sein müssen" in pundit, wird aufgehoben, und die Autorisierungsbedingungen für Action können für jeden Controller beschrieben werden.
Grundlegende Verwendung
Fehler ・ Die Anzahl der Benutzer ist geringer als die von Experten und Cancancan. ・ Im Vergleich zu Experten gibt es keine Scope-Funktion
Referenz-URL Folienfreigabe https://speakerdeck.com/kyuden/rails-authorization https://github.com/kyuden/banken Japanisches Dokument
https://github.com/RolifyCommunity/rolify
Was du tun kannst Die Rolle kann dem für die Authentifizierung verwendeten Modell zugeordnet werden, z. B. Benutzer. Ein Modell und eine Methode für die Rolle werden generiert. Ein Juwel für die Erteilung von Befugnissen, nicht der Genehmigungsmechanismus in der vorherigen Phase. Die Rolle kann für einen Benutzer mehrmals festgelegt werden.
Grundlegende Verwendung
Referenz-URL https://qiita.com/tatsurou313/items/0f632887d049e9503e3b https://github.com/RolifyCommunity/rolify
Es gibt auch eine klare Chnce- und Auth-Logik für die Authentifizierung, die jedoch weggelassen wird.