php - 在 laravel API 中使用 session

标签 php laravel session laravel-5.5

在 larvel 5.5 中通过 dingo 创建双因素短信验证包,我遵循这个简化的工作流程:

首先在您的登录函数中检查 isTwoFactorActive 是真还是假,如果它是真的发送短信并给出响应以获取收到的短信代码。如果为false直接返回token。

Route::post('auth/login', function () {

    $credentials = Input::only('email', 'password');

    if ( ! $token = JWTAuth::attempt($credentials) )
    {
        // return the 401 response
        return Response::json(['error' => 'invalid_credentials'], 401);
    } 

    if(Auth::user()->isTwoFactorActive) {

    $code = rand(1000,9999);  //generate sms code

    $send_sms = SendSMS($code,Auth::user()->phone);  //write your own code here to send SMS to user mobile

    $data= collect(array('sms_code'=>$code,'token'=>$token));  // save sms_code and token in an array 

    Session::push(Auth::user()->id, $data); // save array into session.

    return Response::json(array('login_status'=>'success','user_id'=>Auth::user()->id,'sms_required'=>'yes'));

    } else {

    return Response::json(array('login_status'=>'success','token'=>$token));

    }
});

现在在前端检查是否存在 token 的响应,然后继续显示主页或显示输入短信代码屏幕并在表单中捕获短信代码,然后再次将详细信息发布到此 API。

Route::post('sms/verification', function () {

    $user_id = Request::input('user_id');
    $code= Request::input('code');

    $data = Session::get($user_id);

    if($data->sms_code == $code) {

    return Response::json(array('status'=>'success','token'=>$data->token));

    } else {

   return Response::json(array('status'=>'failed','msg'=>'Invalid sms code!'));

   }
});

如您所见,我使用 session 来存储创建的 token ,以便在双因素授权成功后发送它。但似乎我们不能在 laravel 和 API 中使用 session 。

遇到这种情况怎么办?

最佳答案

Laravel API 默认设置不包括 session 。但我相信你可以手动添加它们。这是我很快找到的链接。 Laravel 5.3 - How to add Sessions to `API` without CSRF?

但是 Sessions 的 Laravel 文档和 Middleware也可能有用。

关于php - 在 laravel API 中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482482/

相关文章:

java - App Engine 本地主机 x 在线 session

php - Mysqli_query无故返回FALSE

php - Laravel 更改密码重置响应

mysql - 如何为不同类型的用户制作出价表结构

php - Laravel 中数据库的复选框值

php - 通过 PHP session 自定义 CSS 属性?

PHP检查用户是否可以访问页面的简单方法

php - mkdir() 未将 chmod 设置为 0777

php - 拉维尔 5.5 : Authorization Policy AccessDeniedHttpException This action is unauthorized

php - 在 PHP 中从另一个函数调用一个函数