2016-10-24 2 views
1

내 응용 프로그램에는 여러 가지 작업이 있지만 사용자가 특정 역할을 수행 할 때만 허용하려고합니다. 컨트롤러에서 동작을 설정하는 방법을 찾을 수 없습니다. 나는 이런 식으로 뭔가 싶어 : 나는 그것을 피하기 싶습니다 그래서 리디렉션 만 CORS 문제가 발생할 것Yii2 : 컨트롤러에서 동작 설정

public function beforeAction($action) 
{ 
    if($action->id != 'range') 
    { 
     # run another action with custom params 
    } 
    else return 1; 
} 

합니다. 이것을 어떻게 할 수 있습니까?
감사합니다.

+0

당신이 [액세스 제어 필터 (HTTP를 사용하여 고려 가지고

http://www.yiiframework.com/doc-2.0/guide-security-authorization.html 또는이 참조를 안내합니다. yiiframework.com/doc-2.0/guide-security-authorization.html#access-control-filter)? – Bizley

+0

예, 저는 @ 비즈즐을했습니다 ...하지만 어떤 행동이 불려지더라도 어떤 행동의 결과를 돌려주고 싶습니다. 다른 행동을 거부하지 말아야합니다. 나는 Access Control로이 작업을 수행하는 방법을 찾지 못했습니다 ... – thomas

답변

2

컨트롤러에서 createAction() 메서드를 재정의하는 방법 중 하나가 있습니다. 조건이 충족되는 경우

public function createAction($id) 
{ 
    if (/* condition for one action limit */) { 
     $id = 'allowedAction'; 
    } 
    return parent::createAction($id); 
} 

이 컨트롤러 내의라는 액션 actionAllowedAction() 방법의 결과로서 반환된다. 당신이 사이트 컨트롤러에서 원하는 것을 가정

+0

감사합니다. 이것은 확실히 @ Bizley 도움이됩니다. – thomas

0
컨트롤러를 사용하면 액세스 제어 필터를 사용할 수 있습니다에서

(ACF)

는이 간단한 좀 걸릴 수 있습니다 actionViewforadmin

use yii\web\Controller; 
use yii\filters\AccessControl; 

class SiteController extends Controller 
{ 
    public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'only' => ['login', 'logout', 'signup', 'viewforadmin'], 
       'rules' => [ 
        [ 
         'allow' => true, 
         'actions' => ['login', 'signup'], 
         'roles' => ['?'], 
        ], 
        [ 
         'allow' => true, 
         'actions' => ['logout'], 
         'roles' => ['@'], 
        ], 
        [ 
         'allow' => true, 
         'actions' => ['viewforadmin'], 
         'roles' => ['admin'], 
        ],     
       ], 
      ], 
     ]; 
    } 
    // ... 
} 

에 대한 액세스를 관리자에 단지 역할을 할 수 // WWW : http://www.yiiframework.com/doc-2.0/yii-base-actionfilter.html

+0

감사합니다. 불행히도 CORS로이 작업을하기에는 너무 어리 석습니다. OPTIONS 요청 ... – thomas

+0

@wath 당신은 의미합니까. 이것은 Yii2와 AUTH가 관리합니다. – scaisEdge

+0

Angularjs 앱용 API로 사용하려면이 항목이 필요합니다. 교차 도메인이기 때문에 Angular는 항상 OPTIONS 요청을 실행하여 누군가 집에 있는지 확인합니다. 일반적으로 이러한 요청을 허용하는 필터가 있지만 제대로 작동하지 않습니다. 나는 그것이 다른 질문을위한 음식이라고 생각한다. 감사! – thomas

관련 문제