首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >身份验证组件问题

问身份验证组件问题
EN

Stack Overflow用户
提问于 2011-01-20 12:01:56
回答 3查看 764关注 0票数 0

我正在尝试让我的管理路由与auth组件一起工作。我希望下面的路由正常工作。

代码语言:javascript
复制
Router::connect('/admin', array('controller' => 'pages', 'action' => 'index', 'admin' => true));

但是当我键入/admin时,它将重定向到/admin/users/login并显示此错误。

代码语言:javascript
复制
Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php

这是我的app_controller代码。

代码语言:javascript
复制
class AppController extends Controller {

    var $components = array('DebugKit.Toolbar','Auth','Session');

    function beforeFilter(){

        //Set up Auth Component
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'admin_index');
        $this->Auth->allow('display');

    }

}

users_controller

代码语言:javascript
复制
<?php
class UsersController extends AppController {

    var $name = 'Users';

    function login(){

    }

    function admin_logout(){
        $this->Session->destroy();
        $this->redirect($this->Auth->logout());
    }

}
?>

如果您需要更多信息,请让我知道。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-01-20 18:57:23

别担心,一切正常:)

在AppController::beforeFilter()中,您声明为了登录,登录是Users/ loginAction (如果是admin=>true,则为Users/admin_login)

当您使用admin=>true转到页面/索引时,如果您没有登录,则会被重定向到Users/admin_login,如下所示:

登录,但当我键入/admin时,它会重定向到/admin/users/

并显示此错误。

Create UsersController::admin_login() in file: cms.local/controllers/users_controller.php

找不到方法UsersController::admin_login(),您应该创建它。

票数 0
EN

Stack Overflow用户

发布于 2011-11-24 01:46:16

您可以通过在loginAction中指定'admin' => false来强制Auth使用无前缀登录操作。这样,所有需要身份验证的操作都将使用无前缀的登录操作。所以你的beforeFilter应该看起来像这样:

代码语言:javascript
复制
function beforeFilter(){

    //Set up Auth Component
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false);
    $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'admin_index');
    $this->Auth->allow('display');

}

类似地,您可以通过另一种方式指定'admin‘=> true,以便只使用admin_login。

票数 0
EN

Stack Overflow用户

发布于 2012-08-04 14:05:36

这对我来说很好:

代码语言:javascript
复制
function beforeFilter() {
    if (isset($this - > params['admin'])) {
        $loggedAdminId = $this - > Session - > read("adminid");
        if (!$loggedAdminId && $this - > params['action'] != "admin_login") {
            $this - > redirect("/admin/admins/login");
            $this - > Session - > setFlash('The URL you followed requires you login.');
        } else {
            $this - > Auth - > allow('*');
        }
    } else {
        $this - > Auth - > loginAction = array('controller' = > 'users', 'action' = > 'login', 'admin' = > false);
        $this - > Auth - > loginRedirect = array('controller' = > 'users', 'action' = > 'admin_index');
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4743310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档