How to Apply Auth Component in CakePHP
Auth Component :-
Auth Component allow authentication on our web app. it prevent user to access personal page which required to login into site. Auth basically filter page according to access / prevent policy.Let start with how to implement Auth Component :-
First : i am using table following table and use CakePHP 2.x Version.
CREATE TABLE `test`.`users` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 40 ) NOT NULL ,
`password` VARCHAR( 40 ) NOT NULL ,
`status` ENUM( 't', 'f' ) NOT NULL DEFAULT 't',
`created` DATETIME NULL ,
`modified` DATETIME NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;
Configuring Components in CakePHP
Step 1:
Auth component is already put inside CakePHP library. so we need to just add into our controller.
Include Auth Component into your controller.
class YourController extends AppController
{
public $components = array('Auth');
.......
}
it could be better to add Auth Component into AppController because it apply to whole web application class AppController extends Controller
{
public $components = array('Auth');
.......
}
Step 2:if you have some other field rather then `username` and `password` then create configure aur settings in beforeFilter() of Controller otherwise skep it.
function beforeFilter()
{
$this->Auth->fields = array(
'username' => 'YOUR USERNAME FIELD NAME',
'password' => 'YOUR PASSWORD FIELD NAME'
);
}
Step3: Setting up login redirect and logout redirect action.
function beforeFilter()
{
$this->Auth->loginRedirect = array('controller' => 'Users', 'action' => 'myaccount');
$this->Auth->logoutRedirect = array('controller' => 'index', 'action' => 'index');
}
after above steps your Auth Component is ready to use. now you have to login user using your own logic and add user details into Auth Session.here i am using my own sample code:-
public function login()
{
if(!empty($this->request->data))
{
$username = $this->request->data['User']['username'];
$password = md5($this->request->data['User']['password']);
// Fetch User Details from database
$user = $this->User->find('first',array(
'conditions'=> array(
'User.username'=>$username,'User.password'=>$password
)
));
if(!empty($user))
{
$this->Auth->login($user);
//Redirect To other page
}
}
}
If you have any problem place your comment or follow these linkAuthentication
Setting-Auth-Component-Variables
login
Comments
Post a Comment