【问题标题】:Get user id by passing token in Laravel [closed]通过在 Laravel 中传递令牌来获取用户 ID [关闭]
【发布时间】:2020-04-02 05:14:18
【问题描述】:

如何通过在 Laravel 中传递令牌来获取用户 ID? 我想从请求中获取用户令牌,然后将用户头像发送给他。

【问题讨论】:

  • 你说通过将令牌传递给 laravel。意思是像jwt?什么样的令牌?

标签: laravel api laravel-passport


【解决方案1】:

您可以使用Crypt Facade 对用户 ID 进行加密和解密并将其传递给您的案例。

我建议检查API token authentication,如果您不想使用它,那么您可以通过非常简单和原生的方式执行以下操作:

  1. 创建一个带有加密用户 ID 的令牌。
  2. 将令牌传递给输入表单,将其保留为隐藏表单值。
  3. 收到带有令牌的请求后,解密令牌,提取 id 并获取结果并发送。

一些安全建议:

  • [取决于用例]在加密和解密时,以及
    user_id 还附加日期时间值,如时间戳。以便您可以执行令牌过期验证。
// Controller
public function index() {
    return view('/top/index.php', [$token => $this->getToken()]);
}

private function getToken() {
    $id = '100001'; //get from db or wherever u need

    // this just example
    return Crypt::encrypt( $id. ':' . time();
}

然后在表单/刀片中

<form>
....
    <input hidden value = "{{ $token }}" name='token'>
....
    <input type submit>

</form>

收到发帖请求时

// controller
public function postIndex(Request $request) {
    $userId = $this->extractIdFromToken($request->input('token'));
    ...
    ...
}

private function extractIdFromToken($token) {
    if ($token === null) {
       throw new \Exception('Missing token');
    }

    $tokenValue = explode(':', Crypt::decrypt($token));
    // do verification of time needed else go to next
    return $tokenValue[0] ?? null;
}

【讨论】:

    【解决方案2】:

    你可以在你的控制器中添加它

    $user = Auth::user();
    
    if ($user)
    {
        return $user->avatar;
    }
    

    您可以使用Auth 来获取经过身份验证的用户。

    【讨论】:

      【解决方案3】:

      试试这个

       $userid = Auth::guard('api')->user()->id;
       echo $userid;
      

      【讨论】:

      • 希望它的工作!!。
      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2021-08-05
      • 2018-01-26
      • 1970-01-01
      • 2018-12-25
      • 2021-12-11
      相关资源
      最近更新 更多