私はCakePHP 3を使用してIIS上で動作するイントラネットアプリケーションを持っています。IISから私はサーバvar $_SERVER['AUTH_USER']
にアクセスできました。この変数を使用してユーザを認証したいと思います。CakePHP 3のカスタム認証
AUTH_USER
に一致させるユーザー名フィールドを使用してデータベースにユーザーテーブルを作成しました。
namespace App\Auth;
use Cake\Auth\BaseAuthenticate;
use Cake\Network\Request;
use Cake\Network\Response;
use Cake\ORM\TableRegistry;
class AuthuserAuthenticate extends BaseAuthenticate
{
public function authenticate(Request $request, Response $response) {
$username = str_replace('DOMAIN\\', '', $_SERVER['AUTH_USER']);
$users = TableRegistry::get('Users');
$user = $users->find()->where(['username' => $username])->first();
if ($user) {
return $user;
} else {
$user = $this->Users->newEntity();
$user->username = $username;
if ($this->Users->save($user)) {
return $user;
} else {
return false;
}
}
}
とのAppController initialize()
に私はカスタムコンポーネントで認証をロードしようとしている:私はそうのようなカスタムAuthコンポーネントを作成しました。私はちょうどかかわらず、私は上に行くしようと何ページにリダイレクトしない得る。この時点で
$this->loadComponent('Auth', [
'authenticate' => [
'Basic' => [
'fields' => ['username' => 'username'],
'userModel' => 'Users'
],
],
'loginAction' => [
'controller' => 'Pages',
'action' => 'display'
],
'storage' => 'Memory',
'unauthorizedRedirect' => false
]);
$this->Auth->config('authenticate', 'Authuser');
は、私は認証に失敗していますか他の何かが問題である場合は本当にわかりません。
私はテストとしてのAppControllerにこれを追加しようとしている:
public function isAuthorized($user)
{
return true;
}
しかし、私は場所でこのコードのいずれかのページにアクセスすることができません。誰でも私が間違っていることを教えてもらえますか?
おかげで、
Kez