Laravel Stormpath 无法访问用户对象

Laravel Stormpath not able to access User Object

我正在使用 Laravel 和 Stormpath 进行用户管理。我能够使用 AJAX 成功注册和登录用户。

成功登录后,只有 url 返回到 AJAX,但登录后,当我转到用户特定页面时,我无法获取用户数据。

注册和登录发生在 RegisterController
用户页面使用 UserController

呈现

我尝试使用

获取用户数据
$user = app('stormpath.user');

在 UserController 中,但是当我这样做时 dd($user) null 被返回。

如何在其他Controller中登录或注册成功后持久化或获取用户数据?

感谢任何帮助!提前致谢!

对于 Stormpath Laravel 集成,当您 运行 AJAX 调用时,我们不会设置任何 cookie。我们在 header 响应中为您提供 JWT,您需要查看并自行存储它们。然后 JWT 将需要作为 Bearer 令牌附加到所有其他请求,这将允许您使用 `$user = app('stormpath.user') 方法从 JWT 中获取用户信息。

我终于让一切正常了。谢谢@bretterer

// 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);

在用户控制器中,我可以使用 app('stormpath.user');

访问用户详细信息

因为我使用的是 Laravel 5.1
我不得不从函数 public function isAuthenticated(Request $request)

中注释掉 vendor/stormpath/laravel/src/Http/Middleware/Authenticate.php 中的 $token = $request->bearerToken();