Module Yii在管理模块中找不到操作登录

Module Yii在管理模块中找不到操作登录,module,yii,Module,Yii,请参阅下面的代码 <?php class DefaultController extends Controller { public function actionIndex() { $this->render('index'); } /** * Displays the login page */ public function actionLogin() { $model =

请参阅下面的代码

<?php

class DefaultController extends Controller
{

    public function actionIndex()
    {
        $this->render('index');
    }

    /**
     * Displays the login page
     */
    public function actionLogin()
    {
        $model = new LoginForm;

        // collect user input data
        if (isset($_POST['LoginForm']))
        {
            $model->attributes = $_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid
            if ($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);
        }
        // display the login form
        $this->render('login', array('model' => $model));
    }

    public function filters()
    {
        return array(
            'accessControl',
        );
    }

    public function accessRules()
    {
        return array(
            array('allow', // allow all users to perform the 'login' action
                'actions' => array('login'),
                'users' => array('*'),
            ),
            array('allow', // allow the admin user to perform everything
                'actions' => array('*'),
                'users' => array('@'),
            ),
            array('deny', // deny all users
                'users' => array('*'),
            ),
        );
    }

}

正如您所见,我通过setComponents添加了loginUrl,但这也不起作用。

如果您没有登录用户,访问控制过滤器将启动并将您重定向到“主页”。您可以在控制器上执行的唯一操作是“登录”,因此索引是被拒绝操作的一部分

如果您没有登录用户,访问控制过滤器将启动并将您重定向到“主页”。您可以在控制器上执行的唯一操作是“登录”,因此索引是被拒绝操作的一部分

谢谢你的帮助,但我希望不要登录重定向到登录页面。并不是说他们会回到家里。他们应该重定向到SiteController/Index的位置设置在哪里?将是“用户”应用程序组件的“loginUrl”。但是默认情况下,这已经是site/login了。我添加了AdminModule.php,因为我现在通过$this->setComponents设置了loginUrl。但这也不起作用。您是否可以添加一个$this->setComponent('user',NULL);然后再确认一下?用户组件基本上是在一开始就初始化的。更新配置不会创建新的配置实例。首先,请确保在没有访问控制的情况下一切正常,查看是否可以正确访问所有模块操作,等等。尝试确认重定向实际上是由筛选器完成的。也可能是您在配置中错误配置了与URL路由相关的内容。谢谢您的帮助,但我希望未登录的重定向到登录页面。并不是说他们会回到家里。他们应该重定向到SiteController/Index的位置设置在哪里?将是“用户”应用程序组件的“loginUrl”。但是默认情况下,这已经是site/login了。我添加了AdminModule.php,因为我现在通过$this->setComponents设置了loginUrl。但这也不起作用。您是否可以添加一个$this->setComponent('user',NULL);然后再确认一下?用户组件基本上是在一开始就初始化的。更新配置不会创建新的配置实例。首先,请确保在没有访问控制的情况下一切正常,查看是否可以正确访问所有模块操作,等等。尝试确认重定向实际上是由筛选器完成的。也可能是您在配置中错误配置了与URL路由相关的内容。
class MyModule extends CWebModule
{

    public function init()
    {

        ...

        Yii::app()->setComponents(array(
            'user'=>array(
                'class'=>'CWebUser',
                'stateKeyPrefix'=>'My',
                'loginUrl'=>Yii::app()->createUrl($this->getId().'/default/login'),
            ),
        ), false);

       ...
class MyModule extends CWebModule
{

    public function init()
    {

        ...

        Yii::app()->setComponents(array(
            'user'=>array(
                'class'=>'CWebUser',
                'stateKeyPrefix'=>'My',
                'loginUrl'=>Yii::app()->createUrl($this->getId().'/default/login'),
            ),
        ), false);

       ...