我尝试使用带有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的密码。 上面的代码我复制并尝试从谷歌 再次感谢。
答案 0 :(得分:2)
我不知道,但如果您遵循"简单的身份验证和授权"在网站上的教程,你必须修改你的" routes.php"也允许访问"显示"到达你的/ pages / controller。我不知道这是不是你的问题,但它似乎有点像。
答案 1 :(得分:0)
那么请在您的用户控制器中将此声明 $ this-> Auth-> allow('login'); 放在父级之后的AfterFilter()回调中: :beforeFilter();调用这将允许您使用登录操作,无论您是否登录