CanCan gem은 더 이상 유지되지 않습니다 . CanCanCan 또는 Pundit과 같은 다른 인증 라이브러리를 사용하십시오.
<img src=“https://fury-badge.herokuapp.com/rb/cancan.png” alt=“Gem 버전” /> <img src=“https://secure.travis-ci.org/ryanb/ cancan.png?branch=master” /> <img src=“https://codeclimate.com/github/ryanb/cancan.png” />
위키 | Rdoc | 스크린캐스트
CanCan은 특정 사용자가 액세스할 수 있는 리소스를 제한하는 Ruby on Rails용 인증 라이브러리입니다. 모든 권한은 단일 위치( Ability
클래스)에서 정의되며 컨트롤러, 보기 및 데이터베이스 쿼리 간에 중복되지 않습니다.
Rails 3 에서 이를 Gemfile에 추가하고 bundle
명령을 실행하세요.
보석 "캉캉"
Rails 2 에서 이를 Environment.rb 파일에 추가하세요.
구성 . 보석 "캉캉"
또는 플러그인으로 설치할 수도 있습니다.
레일스 플러그인 설치 git://github.com/ryanb/cancan.git
CanCan은 컨트롤러에 current_user
메서드가 존재할 것으로 예상합니다. 먼저 일부 인증(예: Authlogic 또는 Devise)을 설정합니다. 다른 동작이 필요한 경우 기본값 변경을 참조하세요.
사용자 권한은 Ability
클래스에 정의됩니다. CanCan 1.5에는 이 클래스를 생성하기 위한 Rails 3 생성기가 포함되어 있습니다.
레일스 g 캉캉: 능력
Rails 2.3에서는 다음 내용으로 'app/models/ability.rb'에 새 클래스를 추가하면 됩니다.
클래스 능력 CanCan :: 능력 포함 def 초기화 ( 사용자 ) 끝 끝
자세한 내용은 능력 정의를 참조하세요.
그러면 현재 사용자의 권한은 can?
그리고 cannot?
뷰와 컨트롤러의 메소드.
<% 가능하다면? :업데이트, @article %> <%= link_to "편집", edit_article_path(@article) %> <% 끝 %>
자세한 내용은 능력 확인을 참조하세요.
authorize!
사용자가 주어진 작업을 수행할 수 없는 경우 컨트롤러의 메서드는 예외를 발생시킵니다.
데프 쇼 @article = 기사 . 찾기 ( 매개변수 [ :id ]) 승인하다! :읽다 , @article 끝
모든 작업에 대해 이를 설정하는 것은 지루할 수 있으므로 RESTful 스타일 리소스 컨트롤러의 모든 작업을 자동으로 승인하기 위해 load_and_authorize_resource
메서드가 제공됩니다. before 필터를 사용하여 리소스를 인스턴스 변수에 로드하고 모든 작업에 대해 권한을 부여합니다.
클래스 ArticlesController < ApplicationController load_and_authorize_resource 데프 쇼 # @article은 이미 로드되어 승인되었습니다. 끝 끝
자세한 내용은 컨트롤러 작업 승인을 참조하세요.
사용자 인증이 실패하면 CanCan::AccessDenied
예외가 발생합니다. 이를 포착하고 ApplicationController
에서 해당 동작을 수정할 수 있습니다.
클래스 ApplicationController < ActionController :: 베이스 Rescue_from CanCan :: AccessDenied | 예외 | Redirect_to root_url , :alert => 예외 . 메시지 끝 끝
자세한 내용은 예외 처리를 참조하세요.
애플리케이션의 모든 작업에 대해 승인이 발생하도록 하려면 ApplicationController에 check_authorization
추가하세요.
클래스 ApplicationController < ActionController :: 베이스 확인_승인 끝
작업에서 인증이 수행되지 않으면 예외가 발생합니다. 이를 건너뛰려면 컨트롤러 하위 클래스에 skip_authorization_check
추가하세요. 자세한 내용은 승인 확인을 참조하세요.
1.6으로 업그레이드
능력 정의
능력 확인
컨트롤러 작업 승인
예외 처리
기본값 변경
자세히 보기
문서에서 해결책을 찾을 수 없는 CanCan 관련 문제가 있는 경우 GitHub에 문제를 추가하거나 프로젝트를 포크하고 끌어오기 요청을 보내주세요.
사양을 실행하려면 bundle
호출한 다음 rake
호출해야 합니다. 자세한 내용은 사양/README를 참조하세요.
CanCan은 declarative_authorization 및 aegis에서 영감을 받았습니다. 또한 CanCan 기여자들에게도 많은 감사를 드립니다. 전체 목록은 CHANGELOG를 참조하세요.