2016-09-05 14 views
4

私は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

答えて

2

あなたのAuthコンポーネントはauthorizeメソッドを実装していません。

public function authorize($user, Request $request) { 
    // return true if authorized 
    // return false if not authorized 
} 

第二に、isAuthorizedControllerAuthorizeコンポーネントを使用するときに呼び出されます。コントローラ認証を使用する場合は、ControllerAuthorize instedを使用する必要があります。

$this->loadComponent('Auth', [ 
    'authenticate' => 'Controller' 
]); 

また:あなたは、すぐに設定を上書きし、BasicAuthenticateコンポーネントを構成しています。