通过在 Laravel 中传递令牌获取用户 ID
Get user id by passing token in Laravel
如何通过在 Laravel 中传递令牌来获取用户 ID?
我想从请求中获取用户令牌,然后将用户头像发送给他。
试试这个
$userid = Auth::guard('api')->user()->id;
echo $userid;
您可以将其添加到您的控制器中
$user = Auth::user();
if ($user)
{
return $user->avatar;
}
您可以使用Auth
来获取经过身份验证的用户。
您可以使用 Crypt Facade 来加密和解密用户 ID,并为您的情况传递它。
我建议检查 API token authentication,如果你不想使用它,那么你可以用非常简单和原生的方式做这样的事情:
- 创建一个令牌,其中加密了用户 ID。
- 将令牌传递给输入表单,将其作为隐藏表单值保留。
- 收到带有令牌的请求后,解密令牌,提取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/blade
<form>
....
<input hidden value = "{{ $token }}" name='token'>
....
<input type submit>
</form>
收到 post 请求后
// 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;
}
如何通过在 Laravel 中传递令牌来获取用户 ID? 我想从请求中获取用户令牌,然后将用户头像发送给他。
试试这个
$userid = Auth::guard('api')->user()->id;
echo $userid;
您可以将其添加到您的控制器中
$user = Auth::user();
if ($user)
{
return $user->avatar;
}
您可以使用Auth
来获取经过身份验证的用户。
您可以使用 Crypt Facade 来加密和解密用户 ID,并为您的情况传递它。
我建议检查 API token authentication,如果你不想使用它,那么你可以用非常简单和原生的方式做这样的事情:
- 创建一个令牌,其中加密了用户 ID。
- 将令牌传递给输入表单,将其作为隐藏表单值保留。
- 收到带有令牌的请求后,解密令牌,提取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/blade
<form>
....
<input hidden value = "{{ $token }}" name='token'>
....
<input type submit>
</form>
收到 post 请求后
// 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;
}