这个想法非常简单。如果您尚未登录,则无法访问注册和登录页面旁边的任何页面。如果您已登录,则可以访问除注册页面之外的所有页面。
现在,通过使用CakePHP的Auth组件实现了一半。这会在未记录时限制访问,并允许在记录时进行访问。
我在这样做时偶然发现的问题是在记录时限制了对注册页面的访问。我尝试了不同的方法,结果相同:注册页面仍可访问。
需要一些帮助,因为我遇到了这个问题。
这是我的代码的一部分(UsersController类中的beforeFilter(); register()将是此控制器中的操作):
function beforeFilter(){
parent::beforeFilter();
$this->Auth->allow("register");
if($this->Auth->user()){//if user is logged in...
$this->Auth->deny("register");//...deny his access to register and login page
}
}
答案 0 :(得分:2)
尝试这样做:
function beforeFilter() {
$this->Auth->authorize = 'controller';
$this->Auth->allow('register');
}
function isAuthorized() {
if ($this->Auth->user()) {
$this->Auth->deny('register');
}
}
更新:可能更清洁的解决方案是
function beforeFilter() {
$this->Auth->authorize = 'controller';
if(is_null($this->Auth->user())) {
$this->Auth->allow('register');
}
}
答案 1 :(得分:2)
function register()
{
if ($this->Auth->user())
{
$this->redirect('someOtherPage');
// or exit;
}
//other stuff
}