Hi Readers,
Welcome to FindNerd,today we are going to discuss on remember me in CakePHP.
If we have a login form in our CakePHP web application, So when we checked the “Remember Me” checkbox in our login page then our login id will be remembered on the browser for 7 days. Means when we will login with the same browser then just we have to click on login button we will get login in our application, And when we will login after 7 days on the same browser then we will get logged out.
you can follow below step:
Firstly let see our User controller:
<?php
public function beforeFilter() {
$this->Auth->allow(array('login', 'register'));
parent::beforeFilter();
}
public function login(){
if ($this->request->is('post')){
if ($this->Auth->login()) {
//select the remember me checkbox?
if ($this->request->data['User']['remember_me'] == 1) {
// remove "remember me checkbox"
unset($this->request->data['User']['remember_me']);
$this->request->data['User']['password'] = $this->Auth->password($this->request->data['User']['password']);
// define the cookie
$this->Cookie->write('remember_me_cookie', $this->request->data['User'], true, '2 weeks');
}
return $this->redirect($this->Auth->redirect());
}else{
$this->Session->setFlash(_('Username or password is incorrect.'));
}
}
$this->set(array('title_for_layout' => 'Login'));
}
//logout function
public function logout(){
//clear the cookie (if it exists) when logging out
$this->Cookie->delete('remember_me_cookie');
return $this->redirect($this->Auth->logout());
}
?>
Now let see login view (login.ctp)
<?php
<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('username'); ?>
<?php echo $this->Form->input('password'); ?>
<?php echo $this->Form->checkbox('remember_me'); ?> Remember Me
<?php echo $this->Form->end('Login'); ?>
?>
AppController will be like below:
<?php
public $components = array('Session', 'Auth','Cookie');
public $uses = array('User');
public function beforeFilter(){
// set cookie options
$this->Cookie->key = 'qSI2$2qs*&sXOw!adre%34SAv!@*(XSL#$%)asGb$@11~_+!@#HKis~#^';
$this->Cookie->httpOnly = true;
if (!$this->Auth->loggedIn() && $this->Cookie->read('remember_me_cookie')) {
$cookie = $this->Cookie->read('remember_me_cookie');
$user = $this->User->find('first', array('conditions' => array('User.username' => $cookie['username'],'User.password' => $cookie['password'])));
if($user && !$this->Auth->login($user['User'])){
$this->redirect('/users/logout'); //after destroy session & cookie
}
}
}
?>
I hope this blog will help you to set “Remember Me” in your CakePHP web application for the login page.
0 Comment(s)