2017-01-24 5 views
1

ユーザー管理にLaravelとStormpathを使用しています。 AJAXを使用して登録とログインが正常にできました。Laravel Stormpathがユーザーオブジェクトにアクセスできない

ログインが成功した後は、URLだけがAJAXに返されますが、ログイン後ユーザー固有のページに移動するとユーザーデータを取得できません。私はUserControllerで中

$user = app('stormpath.user'); 

を使用してユーザーデータを取得しようとしたUserController

登録とログインが使用してレンダリングされRegisterController
ユーザページに起こるが、私がやるときdd($user)nullです戻ってきた。

ログインやサインアップに成功した後、他のコントローラでユーザーデータを保持する方法はありますか?

前もって感謝します!

答えて

1

Stormpath Laravelの統合では、AJAX呼び出しを実行するときにCookieを設定しません。私たちはあなたが見なければならないヘッダーレスポンスであなたにJWTを提供し、それからあなた自身を保管します。 JWTはベアラトークンとして他のすべてのリクエストにアタッチする必要があります。これにより `$ user = app( 'stormpath.user')メソッドを使用してJWTからユーザ情報を取得できます。

+0

私は 'access_token'をクッキーに設定することができますが、ミドルウェア( 'stormpath.auth')をユーザルートに添付すると'未定義メソッドを呼び出す\ Http \ Request :: bearerToken() 'が得られます – linktoahref

+1

Laravelのどのバージョンを使用していますか? – bretterer

+0

私の 'composer.json'に' 5.1。* 'が表示されます。ah https:// laravel.com/api/5.1/Illuminate/Http/Request.htmlの' bearerToken() 'が見つかりません。 – linktoahref

0

私は最終的にすべての作業を得ました。

// Stormpath user account creation 
\Stormpath\Client::$apiKeyProperties = "apiKey.id=" 
     .env('STORMPATH_CLIENT_APIKEY_ID'). 
     "\napiKey.secret=".env('STORMPATH_CLIENT_APIKEY_SECRET'); 

$client = \Stormpath\Client::getInstance(); 
$apps = $client->tenant->applications; 
$apps->search = array('name' => 'My Application'); 
$application = $apps->getIterator()->current(); 
$account = \Stormpath\Resource\Account::instantiate(
    [ 
     'givenName'  => $request->input('username'), 
     'middleName'  => '', 
     'surname'   => 'StromTrooper', 
     'username'  => $request->input('username'), 
     'email'   => $request->input('user_mail'), 
     'password'  => $request->input('user_pass'), 
     'confirmPassword' => $request->input('user_pass') 
    ] 
); 

// Create User Account and Log-in the User 
try 
{ 
    $response = $application->createAccount($account); 

    $passwordGrant = new \Stormpath\Oauth\PasswordGrantRequest(
     $request->input('user_mail'), 
     $request->input('user_pass') 
    ); 

    $auth = new \Stormpath\Oauth\PasswordGrantAuthenticator($application); 

    $result = $auth->authenticate($passwordGrant); 

    $atoken = cookie("access_token", 
        $result->getAccessTokenString(), 
        $result->getExpiresIn() 
        ); 
    $rtoken = cookie("refresh_token", 
        $result->getRefreshTokenString(), 
        $result->getExpiresIn() 
        ); 
    $response_bag['success'] = url('userprofile'); 

} 
catch (\Stormpath\Resource\ResourceError $re) 
{ 
     $response_bag['error'] = $re->getMessage(); 
     $atoken = 'null'; 
     $rtoken = 'null';   
} 

return response() 
     ->json($response_bag) 
     ->withCookie($atoken) 
     ->withCookie($rtoken); 

@brettererありがとうとユーザーコントローラに私がapp('stormpath.user');

を使用して、ユーザーの詳細情報にアクセスすることができると私はLaravel 5.1
を使用していたので、私は機能public function isAuthenticated(Request $request)

から vendor/stormpath/laravel/src/Http/Middleware/Authenticate.phpから $token = $request->bearerToken();をコメントアウトしなければなりませんでした
関連する問題