Автоматически перенаправлять незарегистрированных пользователей на страницу входа
В настоящее время у меня есть проблема, что не авторизованные пользователи могут получить доступ к веб-сайту, если они вводят определенный URL.
Мой контроллер сайта выглядит так:
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout', 'index'],
'allow' => true,
'roles' => ['@'],
],
[
'actions' => ['login'],
'allow' => true,
'roles' => ['?'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
[...]
}
Это не работает, пользователи могут получить доступ к веб-сайту.
Еще одно предостережение: страница входа - это другой URL https://login.mywebsite.com/ тогда как мой сайт http://anotherwebsite.com/
За actionIndex
оно работает:
public function actionIndex()
{
if (!Yii::$app->user->isGuest) {
return $this->render('index');
}
else {
//$this->callback();
$this->redirect('https://login.mywebsite.com');
}
}
Я хочу, чтобы это было по умолчанию, если вы не вошли в систему.
1 ответ
Попробуй удалить 'only' => ['logout'],
от public function behaviors()
или добавить 'index'
документы только о:
- @var массив список идентификаторов действий, к которым должен применяться этот фильтр. Если это свойство не установлено,
- тогда фильтр применяется ко всем действиям, если они не перечислены в [[кроме]].