1)usersテーブルに下記2つ項目を定義する必要がある。
「username」と「password」
2)UsersControllerに認証権限を設定
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add');
}
3)app/Controller/AppController.phpに「Auth」を追加(これらをUsersControllerに追加しても大丈夫)
class AppController extends Controller {
//...
public $components = array(
'Flash',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'posts',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'pages',
'action' => 'display',
'home'
),
'authenticate' => array(
'Form' => array(
'passwordHasher' => 'Blowfish'
)
)
)
);
public function beforeFilter() {
$this->Auth->allow('index', 'view');
}
//...
}
4)UsersControllerにlogin/logoutを定義
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error(__('Invalid username or password, try again'));
}
}
public function logout() {
return $this->redirect($this->Auth->logout());
}
5)User Modelでpasswordをhashする
App::uses('AppModel', 'Model');
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');
class User extends AppModel {
// ...
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$passwordHasher = new BlowfishPasswordHasher();
$this->data[$this->alias]['password'] = $passwordHasher->hash(
$this->data[$this->alias]['password']
);
}
return true;
}
6)login functionのviewを追加
<div class="users form">
<?php echo $this->Flash->render('auth'); ?>
<?php echo $this->Form->create('User'); ?>
<fieldset>
<legend>
<?php echo __('Please enter your username and password'); ?>
</legend>
<?php echo $this->Form->input('username');
echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login')); ?>
</div>
Authでログインしたユーザーのアクセスは以下2つ
// どこからでも利用できます。
AuthComponent::user('id')
// Controllerの中でのみ利用できます。
$this->Auth->user('id');
コントローラーで取得条件を指定することによって、ユーザーがどこまで権限があるか制御する
Authでログインしたユーザーのアクセスは以下2つ
// どこからでも利用できます。
AuthComponent::user('id')
// Controllerの中でのみ利用できます。
$this->Auth->user('id');
コントローラーで取得条件を指定することによって、ユーザーがどこまで権限があるか制御する
0 件のコメント:
コメントを投稿