加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel无法检索POST请求中保存的会话数据

发布时间:2020-12-14 19:37:40 所属栏目:大数据 来源:网络整理
导读:我在Laravel会话创建和阅读时遇到问题. 我可以创建会话值,但问题是访问数据. 如果我在POST请求中创建会话值,那么我无法在GET请求中访问它. 这是我的路线 Route::get('/','HomeController@index');Route::get('/admin/dashboard','AdminController@dashBoard'
我在Laravel会话创建和阅读时遇到问题.
我可以创建会话值,但问题是访问数据.
如果我在POST请求中创建会话值,那么我无法在GET请求中访问它.

这是我的路线

Route::get('/','HomeController@index');
Route::get('/admin/dashboard','AdminController@dashBoard');
Route::post('/admin/login_admin','AdminController@doLogin');
Route::post('/admin/login_test','AdminController@test');
Route::get('/admin/login','AdminController@seeLogin');

这里的doLogin使用post方法:

public function doLogin(Request $request){

   $email = $request->input("email");
   $password = $request->input("password");

   $checkerInfo = AdminGetLoginChecker($email,$password);
   //if logged in
   if($checkerInfo){
       $request->session()->put('loggedIn','1');
       $request->session()->put('userId',$checkerInfo);
       $request->session()->save();
       return response()->json([
           'success' => true,'message' => 'logged In'
       ]);
   }

   return response()->json([
       'success' => false,'message' => 'Incorrect User Email,Password'
   ]);

 }

现在问题是如果请求访问其他get请求部分中的会话值,那么它不允许访问.

public function dashboard(Request $request)
{

   $data = $request->session()->all();

   print_r($data);

   return view('welcome',['name' => 'James']);
}

这里它不显示保存的会话数据,因为它是一个GET请求.

现在,如果尝试使用POST请求在任何其他方法中获取请求,它将在doLogin方法中更早地显示已保存的数据

//it's a POST requset
public function test(Request $request)
{
   $data = $request->session()->all();
   print_r($data);
}

如何在GET请求的方法中访问会话数据?

提前致谢,

更新:

请注意,在verifyCsrfToken middelwere的excepts区域添加网址“’/ admin / login_admin’”,以避免在发布数据时出现csrf令牌问题

namespace AppHttpMiddleware;
use IlluminateFoundationHttpMiddlewareVerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
   /**
   * The URIs that should be excluded from CSRF verification.
   *
   * @var array
   */
   protected $except = [
       //
       'url' => '/admin/login_admin'
   ];
}

解决方法

让我们这样试试吧

$input = $request->all();
 // imagine you have Admin.php model
 $query = Admin::login($input['email'],$input['password'])->first();
 if ($query)
 {
     Session::put('userId',$query->id);
     Session::save();
     return "u're in";
 }
    else{
        return "User name or password is wrong";
    }

并在您的测试功能

return $request->session()->get('userId');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读