2016-01-29 11 views
1

У меня есть проект бэкэнд на моем Ssl сервере, как ssl.mybackend.com, со следующими:Yii2 AccessControl к действию, чтобы получить доступ к определенным веб-сайт

class FormController extends Controller 
{ 
    public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'rules' => [      
        [ 
         'actions' => ['index', 'delete', 'view', 'create'], 
         'allow' => true, 
         'roles' => ['@'], //only authorized users 
        ], 
        [ 
         'actions'=> ['create-order'], 
         'allow'=>true //change all users to "myfrontend.com"     
        ] 
       ], 
      ], 

     ]; 
    } 

мне нужно предоставить доступ к create-order действия только на веб-сайт во внешнем интерфейсе , Я не уверен, что можно сделать с AccessControl и оценить, можете ли вы посоветовать другие решения.

+0

Вероятно, вы можете использовать matchCallback в AccesControl для этого. См. Http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#access-control-filter – TomaszKane

ответ

0

Если вы хотите использовать ajax-звонки с внешнего интерфейса в другом домене, вместо этого вы должны использовать corsFilter. Пример из документации:

public function behaviors() 
{ 
    return [ 
     'corsFilter' => [ 
      'class' => \yii\filters\Cors::className(), 
      'cors' => [ 
       // restrict access to 
       'Origin' => ['http://www.myserver.com', 'https://www.myserver.com'], 
       'Access-Control-Request-Method' => ['POST', 'PUT'], 
       // Allow only POST and PUT methods 
       'Access-Control-Request-Headers' => ['X-Wsse'], 
       // Allow only headers 'X-Wsse' 
       'Access-Control-Allow-Credentials' => true, 
       // Allow OPTIONS caching 
       'Access-Control-Max-Age' => 3600, 
       // Allow the X-Pagination-Current-Page header to be exposed to the browser. 
       'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'], 
      ], 

     ], 
    ]; 
} 

Cross Origin Resource Sharing in Yii2

+0

, похоже, что это не сработало, потому что это позволяет мне сделать запрос POST с локального хоста. –