YII 프레임 워크 - 모듈의 모든 컨트롤러에 대해 동일한 액세스 규칙을 지정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1612472

  •  06-07-2019
  •  | 
  •  

문제

관리자 별 작업을위한 모듈을 만들었습니다. 모든 컨트롤러에 대해 동일한 액세스 규칙을 작성하고 싶지는 않지만 코딩 스타일은 아닙니다.

도움이 되었습니까?

해결책

하나의 솔루션은 인증 된 모든 클래스에 대한 공통베이스 클래스 컨트롤러를 확장하는 것입니다.

이런 식으로 한 번 쓸 수 있습니다.

다른 팁

모듈은 분리 된 디렉토리 구조를 가진 하위 응용 프로그램과 같습니다. 허가를 필터링하거나 확인하는 것은 책임이 없습니다.

유일한 중요한 해결책은 Ismael이 제안한대로 새로운 추상화를 정의하는 것입니다.

class ExtendedController
{
    public function rules()
    {
        return array_merge(parent::rules(), array(
           // your rules
        ));
    }
}

Ismael과 Pestaa 선택은 구현하기에 매우 빠릅니다. 그럼에도 불구하고 RBAC 모델과 같은 더 강력한 대안을 항상 권장합니다. 아주 좋은 GUI를 찾을 수 있습니다 yii rbac 안에 http://code.google.com/p/srbac/

이것은 나를 위해 효과가있었습니다.

class extendedController extends baseController
{
    public function accessRules()
    {
        return array_merge(

            // This controller's rules are added first:
            // Allow all users to call the 'hello' action.
            array(
                array('allow',
                    'actions'=>array('hello'), 
                    'users'=>array('*'),
                ),
            ),

            // BaseController rules are added last, especially
            // if the last rule in the baseController denies all
            // users that were not allowed yet.
            parent::accessRules()
        );
    }

    public function actionHello()
    {
        echo('Hello!');
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top