Cakephp与基本的Auth组件

时间:2011-10-07 05:14:39

标签: php cakephp

我尝试使用带有auth组件的cakephp,但这不起作用。 有人可以帮助我,非常感谢。 这是我的代码:

此处的控制器文件

Class UsersController extends AppController {

var $name = 'Users';
var $uses = array('User');
var $viewPath = 'my_view/user';
var $layout = 'default';
var $helpers = array('javascript');

function beforeFilter() {
    parent::beforeFilter();
}

function login() {
    $this->layout = 'login';
}

function logout() {
    $this->layout = 'login';
    $this->redirect($this->Auth->logout());
}

模型文件:

Class User extends AppModel {

    var $name = 'User';
    var $useTable = 'users';
    var $belongsTo = array();
    var $validate = array(
        'username' => array(
            'rule' => 'notEmpty',
            'message' => 'Username cannot empty'
        )
    );

}

AppController文件:

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

function beforeFilter() {
    Security::setHash("md5");
    $this->Auth->fields = array('username' => 'username', 'password' => 'password');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    //$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
    $this->Auth->logoutRedirect = '/';
    $this->Auth->loginError = 'Invalid e-mail / password combination.  Please try again';
    $this->Auth->authError = "This  error shows up with the user tries to access a part of the website that is protected.";
}

在我看来:

echo $this->Session->flash('auth');
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');

从我的代码中,我需要它来登录以重定向到某个页面(例如:仪表板/索引)。 并且从这个代码必须回复来自$ this-> Auth-> loginError的字符串,当登录失败但它没有显示然后我不知道解决它。在我的数据库中,我也存储了md5的密码。 上面的代码我复制并尝试从谷歌 再次感谢。

2 个答案:

答案 0 :(得分:2)

我不知道,但如果您遵循"简单的身份验证和授权"在网站上的教程,你必须修改你的" routes.php"也允许访问"显示"到达你的/ pages / controller。我不知道这是不是你的问题,但它似乎有点像。

答案 1 :(得分:0)

那么请在您的用户控制器中将此声明 $ this-> Auth-> allow('login'); 放在父级之后的AfterFilter()回调中: :beforeFilter();调用这将允许您使用登录操作,无论您是否登录