Yii2. дектриум/пользователь. Пользовательское действие контроллера перенаправляет на страницу входа

#php #yii2 #url-routing #yii2-basic-app #yii2-user

#php #yii2 #url-маршрутизация #yii2-basic-app #yii2-пользователь

Вопрос:

Проблема

Каждое пользовательское действие перенаправляет обратно на страницу входа.

Мой код

Я расширил свой пользовательский контроллер с dektriumusercontrollersRegistrationController

Мой web.php

  'urlManager'   => [
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
            'rules'           => [

            ],
        ],
 

 'modules'    => [
        'user' => [
            'class'         => 'dektriumuserModule',
            'controllerMap' => [
                'registration' => 'appcontrollersuserRegistrationController'
            ],
        ],
    ],
 

Пользовательский контроллер

 namespace appcontrollersuser;

use dektriumusercontrollersRegistrationController as BaseAdminController;

class RegistrationController extends BaseAdminController
{
    public function actionPlan()
    {
        echo 'Test';
    }
}
 

Переопределенные методы работают хорошо, но каждое пользовательское действие ( site.com/user/registration/plan ) перенаправляет обратно на страницу входа.

Комментарии:

1. вы вошли в систему?

2. @scaisEdge нет. // просто символы должны быть не менее 15 символов…

3. с помощью dektrium, если вы не вошли в систему, вы автоматически перенаправляетесь на вход в систему..

4. @scaisEdge можно ли этого избежать? Я должен сделать многостраничную регистрацию, поэтому должна быть первая с ценами.

5. Ваша реализация отличается и связана с вашими потребностями .. для меня отсутствие части, связанной с действием, разрешенным для зарегистрированного пользователя, нехорошо .. вы должны когда-либо сохранять четкое видение или разрешение на доступ.. внутри контроллера..

Ответ №1:

Если вы хотите изменить правила контроля доступа, вы должны изменить их должным образом, например: в вашем контроллере сайта добавьте план к правилам, доступным без аутентификации

 class SiteController extends Controller
{
/**
 * @inheritdoc
 */
   public function behaviors()
   {
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login','plan',  'error'],
                    'allow' => true,
                ],
                [
                    'actions' => ['logout', 'index'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'logout' => ['post'],
            ],
        ],
    ];
}
 

смотрите это для получения дополнительной информации http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html

Ответ №2:

Еще одна реализация

 class SiteController extends Controller
{
  /**
   * @inheritdoc
   */
   public function behaviors()
   {
    $behaviors = [
        'access' => [
            'rules' => [
                [
                    'actions' => ['login', 'plan', 'error'],
                    'allow'   => true,
                ],
            ],
        ],
    ];

    return ArrayHelper::merge($behaviors, parent::behaviors());
    }
}