YII 프레임 워크 - 모듈의 모든 컨트롤러에 대해 동일한 액세스 규칙을 지정하는 방법은 무엇입니까?
문제
관리자 별 작업을위한 모듈을 만들었습니다. 모든 컨트롤러에 대해 동일한 액세스 규칙을 작성하고 싶지는 않지만 코딩 스타일은 아닙니다.
해결책
하나의 솔루션은 인증 된 모든 클래스에 대한 공통베이스 클래스 컨트롤러를 확장하는 것입니다.
이런 식으로 한 번 쓸 수 있습니다.
다른 팁
모듈은 분리 된 디렉토리 구조를 가진 하위 응용 프로그램과 같습니다. 허가를 필터링하거나 확인하는 것은 책임이 없습니다.
유일한 중요한 해결책은 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!');
}
}
제휴하지 않습니다 StackOverflow