Авторизация

Всем привет. Подскажите как правильно закрыть админку от гостей, т.е. если человек не авторизован на сайте, перебрасывать его на страницу логина. Сейчас сделал так в SiteController.php, но не уверен насколько это правильно:




public function actionIndex()

	{

		// renders the view file 'protected/views/site/index.php'

		// using the default layout 'protected/views/layouts/main.php'

		

		if(Yii::app()->user->isGuest)

		{

			$this->redirect('site/login');

		}else{

			$this->render('index');

		}

	}



Отнаследовать все админские контроллеры от некоего базового и применить в нем фильтр accessControl.

Если незалогиненный пользователь тыкнется в защищенный контроллер, его перебросит на страницу логина (задается параметром loginUrl конфига компонента user), при этом ему автоматически пропишется в сессию урл, на который он тыкался. Этот урл можно извлечь следующим образом: Yii::app()->user->returnUrl

Иными словами, в экшне логина проверяете, есть ли return url, если да - перекидываете на него, если нет - ну, на какой-то дефолтный.

Спасибо

Странности какие-то, создал контроллер AccessControl, расширил от Controller, пишу теперь в контроллере которому хочу права выставить




<?php

class NodeController extends AccessControl

{



Получаю




Error 500

include(AccessControl.php): failed to open stream: No such file or directory



Не пойму почему так :(

Где-то что-то не импортировалось.

Если это внутри модуля - нужно импортировать отдельно, например:


public function init() {

	// this method is called when the module is being created

	// you may place code here to customize the module or the application


	// import the module-level models and components

	$this->setImport(array(

		'admin.filters.*',

		'admin.models.*',

		'admin.components.*',

		'admin.controllers.AController', // <<<========

	));

}



Ну и вообще, смотря куда положили файл. Проверьте, что он где-нибудь по стандартному пути лежит, типа в controllers или components

Дык в одной папке с NodeController, т.е. в папке controllers :)

Нашел ответ http://stackoverflow.com/questions/14150461/yii-inheriting-from-custom-controller-class-not-found, думал они автоматом все подгружаются :unsure:

Стопудово, протупил.

Оказывается у меня даже в основном конфиге что-то импортируется отдельно.

Бывает, еще раз спасибо :)