#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());
}
}