0

REST経由でログインしようとすると、次のように単純に追加しました:

if ($this->RequestHandler->isXML()) {
     $this->Auth->authenticate = array('Basic');
}

私のプラグインAppControllerへ。残りのクライアントを介して要求すると、次のようになります: DbAcl::check() - 権限チェックでの ARO/ACO ノード ルックアップに失敗しました。

ユーザーオブジェクトがダンプされました。奇妙なことに、ログインしているように見えますが、権限を正しく読み取っていませんか?

4

2 に答える 2

0

ここで見逃していると思われる基本的なことが1つあります。それは、認証と承認は2つの異なるものです。

認証とは、提供された資格情報によってユーザーを識別し、ユーザーが本人であることを確認するプロセスです。これは通常、ユーザー名とパスワードを使用して行われます。

承認は、現在のユーザーが特定のリソースにアクセスできるようにするプロセスです。

発生したエラーは認証エラーであり、ACLを使用しようとしていることを示しています。この問題の修正は、コントローラーベースの承認を構成し、それを介して管理者がすべてにアクセスできるようにすることです。コントローラベースの許可は、ACL許可とは関係ありません。提供されているリンクを確認してください。

AuthComponentは、3つの異なるタイプの認証を実装します。

FormAuthenticate-フォームのPOSTデータに基づいてユーザーを認証できます。通常、これはユーザーが情報を入力するログインフォームです。

BasicAuthenticate-基本HTTP認証を使用してユーザーを認証できます。

DigestAuthenticate-ダイジェストHTTP認証を使用してユーザーを認証できます。

RESTサービスを開発している場合は、ダイジェスト認証を「最適な」ものとして使用することをお勧めしますが、それでもログインする内容によって異なります。

于 2012-07-09T04:36:08.827 に答える
0

私が追加したとき:

$this->Auth->authorize = array('Controller');

isAuthorized メソッドを実装しました。

public function isAuthorized($user) {
    if (isset($user['role_id']) && $user['role_id'] == 1) { 
         return true; //Admin can access every action   
    } 
    return false; // The rest don't 
} 

出来た。

于 2012-07-08T15:55:24.353 に答える