1

私は問題があります。

Cakephp (バックエンド) と angular js (フロントエンド) を使用してアプリを作成したいと思います。

angular jsからのログインユーザーについてはわかりません。

私のコード:

バックエンド - appController

class AppController extends Controller {

    public $components = array(
        'Session',
        'RequestHandler',
        'Cookie',
        'Auth' => array(
            //'loginRedirect'   => array('controller' => 'index', 'action' => 'home'),
            //'logoutRedirect'=> array('controller' => 'index', 'action' => 'home'),
                'authenticate'  => array(
                'Form' => array(
                    'fields'    => array('username' => 'username', 'password' => 'password', 'status' => 'enabled'),
                    'userModel' => 'User',
                    'scope'     => array('User.status' => 'enabled')
                )
            )
        )
    );

    public $helpers = array ('Html','Session','Js','Form');

}

バックエンド - usersController

class UsersController extends AppController {

    public function beforeFilter() {

        $this->Auth->allow('register');

        $this->Auth->fields = array(
            'username'          => 'username',
            'password'          => 'secretword',
        );
    }

    public function login() {

        if ($this->request->is('post')) {

            if ($this->Auth->login()) {
                $this->User->id = $this->Auth->user('id');
                $this->User->saveField('last_login', date('Y-m-d H:i:s') );
                die("Logged");
            }
        }
        throw new ForbiddenException("You are not authorized to access that location.");

    }

フロントエンド - userSv

var login = function(data) {

    var deferred = $q.defer();

    var params = {
        "params":{
            "plugin":null,
            "controller":"users",
            "action":"login",
            "named":[],
            "pass":[],
            "isAjax":false              
        },
        "data":{"User":{"username":data.username,"password":data.password}},
        "query":[],
        "url":"users\/login",
        "base":"",
        "webroot":"\/",
        "here":"\/users\/login"
    };

    console.log(params);

    $http({method: 'POST', url: '/users/login',data:params}).
    success(function(data, status, headers, config) {
        console.log("success");
        //console.log(data);
        console.log(status);
        console.log(headers);
        console.log(config);
    }).
    error(function(data, status, headers, config) {
        console.log("error");
        //console.log(data);
        console.log(status);
        console.log(headers);
        console.log(config);
    });

    return deferred.promise;
}

だから、情報を送った後、私は得る:

「その場所にアクセスする権限がありません。

エラー: 要求されたアドレス '/users/login' は、このサーバーで見つかりませんでした。"

何か考えはありますか?

4

1 に答える 1

0

バックエンドの CakePHP サーバーに JSON リクエストを行う Angular アプリを持つコードをいくつか書きました。認証はプラグインによって処理されます。私はそれがまさにあなたが探しているものだと思います。1 つの注意点は、組み込みの CakePHP Auth コンポーネントを使用しないことです。独自に作成しました。

ここにコードがあり、ReadMeには概念があります。

于 2015-01-13T06:59:01.063 に答える