php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp相关的知识,希望对你有一定的参考价值。
<?php
// in controller->edit()
public function edit(int $id=null) {
$user = $this->Users->get($id, [
'contain' => []
]);
if ($this->request->is(['patch', 'post', 'put'])) {
/**
* Password Verification
* --------------------- */
$inputtedPW = $this->request->data('password');
$inputtedOldPW = $this->request->data('old_password');
if ($user->password !== $inputtedPW) { /* change PW? */
if (!$user->checkPassword($inputtedOldPW)) {
$this->Flash->error('旧パスワードが一致しません。');
return $this->redirect(['action' => 'edit', $id]);
}
} elseif ($this->request->data('old_password')) {
$this->Flash->error('パスワードを変更しない場合、旧パスワードは入力しないでください。');
return $this->redirect(['action' => 'edit', $id]);
}
$user = $this->Users->patchEntity($user, $this->request->getData());
if ($this->Users->save($user)) {
$this->Flash->success(MSG_UPDATE_SUCCESS);
return $this->redirect(['action' => 'edit', $id]);
}
$this->Flash->error(MSG_UPDATE_ERROR);
}
$this->set(compact('user'));
$this->set('_serialize', ['user']);
}
// in User Entity
namespace App\Model\Entity;
use Cake\ORM\Entity;
use Cake\Auth\DefaultPasswordHasher;
class User extends Entity
{
/**
* Set Password via DefaultPasswordHasher
* Set hashed password through patchEntity() in CREATE & UPDATE .
* @param string $password
* @return string (hashed password)
*/
protected function _setPassword($password) {
return (new DefaultPasswordHasher)->hash($password);
}
/**
* Get hashed string via DefaultPasswordHasher
* @param string $str
* @return string (hashed str)
*/
public function hashString(string $str='') {
if (empty($str)) return false;
return (new DefaultPasswordHasher)->hash($str);
}
/**
* Check Password by DefaultPasswordHasher
* Older password verification on UPDATE.
* @param string $plainString
* @return bool true | false
*/
public function checkPassword(string $plainString='') {
if (empty($plainString)) return false;
return (new DefaultPasswordHasher)->check($plainString, $this->password);
}
}
?>
<!-- in view -->
<?php echo $this->Form->password('password') ?>
<?php echo $this->Form->password('old_password', [
'placeholder' => '変更する場合は旧パスワードを入力してください'
]) ?>
以上是关于php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp的主要内容,如果未能解决你的问题,请参考以下文章
php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp
php [cakephp:DropShell]删除所有应用程序表以进行开发。 #cakephp
php [cakephp:MediaController]用文件二进制文件返回cake的响应对象。 #cakephp
由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库
CakePHP 教程:PHP 开发框架
CakePhp 2.6.3 不适用于 PHP 7