Sart
(Sartsart)
July 5, 2010, 8:16pm
1
В окне браузера ссылка - http://127.0.0.1/blog/index.php?r=User/index .
Пункт меню высвечивает ссылку - http://127.0.0.1/blog/index.php?r=user/create .
Нажимаю на пункт меню и попадаю на раскрытую ссылку http://127.0.0.1/blog/index.php?r=site/login .
Все как положено - есть стандартно сгенерированные с помощью gii модель user, соответствующий контроллер
и представления.
Бьюсь полдня, хоть ты тресни…
Сейчас вот пришло в голову, что такая ситуация возникла для всех layout типа column2 после перехода с yiic на
gii.
У кого есть время, подскажите, пожалуйста, в чем тут может быть дело.
Посмотрел вот сейчас правило доступа-
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('@'),
Возможно yii сама посылает на аутентификацию, но откуда ей известен
контроллер/действие, ответственные за аутентификацию ?
После аутентификации все заработало.
kitt
(Xzombi)
July 6, 2010, 12:05am
2
Возможно yii сама посылает на аутентификацию, но откуда ей известен
контроллер/действие, ответственные за аутентификацию ?
Она не знает, она предпологает. Убери из котроллера SiteController экшен Login и получишь HTTP404
В чем проблема, я так и непонял.
Если нужен доступ к update, create без авторизации, замени собаку на звездочку
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('*'),
Sart
(Sartsart)
July 6, 2010, 12:32am
3
[/quote]
А где у меня написано, что site/login - отвечает за аутентификацию ?
У меня написано только что контроллер site - является контроллером по умолчанию.
У меня нигде не сказано, что в контроллере site действие login отвечает за аутентификацию
и, тем более не сказано, что в случае нарушения правил доступа по причине неприемлемой
аутентификации, необходимо идти на аутентификацию.
Ладно, будем считать, что в случае, когда правила доступа требуют аутентификации,
yii по умолчанию направляет нас на site/login - url.
Может это где-то и есть в документации, пока еще не дошел, наверное.
kitt
(Xzombi)
July 6, 2010, 1:20am
4
Ну вообще, там в случае непрохода через accessRules котроллера вызывается метод CWebUser->loginRequired()
loginRequired() method
Redirects the user browser to the login page. Before the redirection, the current URL (if it’s not an AJAX url) will be kept in returnUrl so that the user browser may be redirected back to the current page after successful login. Make sure you set loginUrl so that the user browser can be redirected to the specified login URL after calling this method. After calling this method, the current request processing will be terminated.
то есть loginUrl можно установить самостоятельно.
andy_s
(Arekandrei)
July 6, 2010, 7:32am
5
config/main.php:
'components'=>array(
'user'=>array(
'loginUrl'=>array('site/login'),
'allowAutoLogin'=>true,
),
),
Sart
(Sartsart)
July 6, 2010, 10:41am
6
name=‘andy_s’ post=‘50461’]
config/main.php:
'components'=>array(
'user'=>array(
'loginUrl'=>array('site/login'),
'allowAutoLogin'=>true,
),
),
Вообще-то у меня в этом месте вот что:
// application components
'components'=>array(
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
),
Но в принципе картина прояснилась. Скорее всего, в случае отсутствия явного определения loginURL , метод CWebUser->loginRequired() по умолчанию пытается обратиться к действию login default -контроллера.
Большое спасибо kitt и Andy_s.
Вопрос в тему, может быть есть что-то под рукой:
где задается этот вот homeUrl - Yii::app()->homeUrl ?
zealotous
(Zealotous)
October 23, 2010, 8:00am
7
Sart:
Вопрос в тему, может быть есть что-то под рукой:
где задается этот вот homeUrl - Yii::app()->homeUrl ?
config/main.php
<?php
// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');
// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
'homeUrl'=>'/post/',