Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户
Posted
技术标签:
【中文标题】Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户【英文标题】:Laravel Set Session or Token for External User Login Successfully - No User Database Only Api user 【发布时间】:2019-12-27 19:02:12 【问题描述】:我正在使用外部 API 从外部站点提取用户信息。我已经完成了 Laravel 上的用户登录路由,并从控制器文件中获取了数据。从外部用户 API 链接拉取和显示数据没有问题。
如何像普通 Laravel 用户一样对使用外部 API 登录但没有数据库的用户进行令牌和会话操作。请注意,我可以使用可用的用户 API 令牌的相同令牌部分
此外,我不想在每次用户登录时通过在控制器之间分配会话来传输信息。用户登录后如何在所有交易中分配令牌?
这些控件是通过登录屏幕的 post 方法来实现的
public function loginData(Request $request)
$password = $request->password;
$email = $request->email;
$apiman = "Bearer $this->accesstokenApi()";
$client = new Client();
$response = $client->post('https://testapi.com/api/v3/Profile', [
'headers' =>
[
'cache-control' => 'no-cache',
'authorization' => $apiman,
'content-type' => 'application/json'
],
'json' =>
[
'Email' => $email,
'Password' => $password
],
]);
$data = json_decode((string) $response->getBody(), true);
if ($data['ResponseType']=="Ok")
session()->put('token', $data);
return redirect('/user-detail');
else
return response()->json([
'success' => false,
'message' => 'Invalid Email or Password',
], 401);
用户登录正常。之后,机器应该提供什么令牌,或者会话可以在哪里提供给该用户?此外,如果用户已登录,我如何让他看到主页而不是再次显示登录表单,就像在 Laravel 登录过程中一样?
【问题讨论】:
【参考方案1】:也许您可以创建新的中间件来检查会话中是否存在令牌
这是您可以根据需要使用和调整的示例。
namespace App\Http\Middleware;
use Closure;
class Myauth
public function handle($request, Closure $next, $guard = null)
if(session()->has('token'))
return $next($request);
else
return response('Unauthorized.', 401);
//OR return redirect()->guest('/');
【讨论】:
我觉得你这里不需要 else 声明以上是关于Laravel 为外部用户登录成功设置会话或令牌 - 无用户仅数据库 Api 用户的主要内容,如果未能解决你的问题,请参考以下文章