1

fb ユーザー ID を使用してユーザーにログインしています。したがって、ユーザーにログインするときにユーザー名やパスワードは必要ありません。これはうまくいきます。ただし、アクセスしようとすると、$this->Auth->user何も保存されません。以下のコードを参照してください。

$this->authUser = $this->User->findById($user_profile['id']);
        if($this->authUser){
            if($this->Auth->login($this->authUser)){
            $this->redirect('/Users/dash');
            }

何か案は?

$this->Authリダイレクトを行う代わりにデバッグすると、次のようになります。

object(AuthComponent) {
components => array(
    (int) 0 => 'Session',
    (int) 1 => 'RequestHandler'
)
authenticate => array(
    (int) 0 => 'Form'
)
authorize => array(
    (int) 0 => 'Controller'
)
ajaxLogin => null
flash => array(
    'element' => 'default',
    'key' => 'auth',
    'params' => array()
)
loginAction => array(
    'controller' => 'users',
    'action' => 'login',
    'plugin' => null
)
loginRedirect => null
logoutRedirect => array(
    'controller' => 'users',
    'action' => 'login',
    'plugin' => null
)
authError => 'You can't access that page'
allowedActions => array(
    (int) 0 => 'index',
    (int) 1 => 'view'
)
request => object(CakeRequest) {
    params => array(
        'plugin' => null,
        'controller' => 'Users',
        'action' => 'index',
        'named' => array(),
        'pass' => array()
    )
    data => array(
        'signed_request' => 'Xyx9uGB4OZT_S59w-sMmJe5ofuzCwib2F1dGhfdG9rZW4iOiJBQUFEcDlCdlpDMzRjQkFJSlBaQ3VwVGtoTlJRRGdIWkJEU0IxeWlTZDFhRTNLcXg1TzJma2Ewek1yOUlrTkVUZTBWbGNpaUxhMFpDUWFQd0ZOWVF3MnZyU1B4NXFrV2VqMjlOMzY4NXJ2d1pEWkQiLCJwYWdlIjp7ImlkIjoiMjQ3ODg2NjY1MzMxOTgwIiwibGlrZWQiOnRydW8BPoTx2YAtQtdin0.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzNDYyNjMyMDAsImlzc3VlZF9hdCI6MTM0NjI1NzU3NUsImFkbWluIjp0cnVlfSwidXNlciI6eyJjb3VudHJ5IjoiZ2IiLCJsb2NhbGUiOiJlbl9HQiIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiI2NjEyNjMzODgifQ'
    )
    query => array()
    url => 'Users/index'
    base => ''
    webroot => '/'
    here => '/Users/index'
}
response => object(CakeResponse) {

}
settings => array(
    'authError' => 'You can't access that page',
    'authorize' => array(
        (int) 0 => 'Controller'
    )
)
Session => object(SessionComponent) {
    settings => array()
    components => array()
}

}

ありがとう!

4

2 に答える 2

1

これを試してください(私にとってはうまくいきます。アカウントのアクティブ化後にユーザーを自動ログインするために使用しています):

$user = $this->User->findById($id);
$user = $user['User'];
$this->Auth->login($user);

$this->Auth->user もプロパティではありません。アクセスしたい場合は、 と書く必要があります$this->Auth->user();

于 2012-08-31T06:23:08.500 に答える
0

検索結果にハッシュ化されたパスワードが含まれているため、ログインできませんでした。そして、$this->Auth->login()メソッドはそれを再びハッシュ化されたパスワードに変換します。ハッシュされたパスワードを解読することはできません

次のコードを使用してそれを行うことができます。

        if($this->Auth->login($user_profile['id'])){
        $this->redirect('/users/dash');
        }

Auth::login は、ユーザー名とパスワードの組み合わせ、または単にユーザー ID (データベース内のユーザー モデルの主キー) のいずれかを受け入れます。

于 2012-08-30T04:42:36.060 に答える