iT邦幫忙

0

laravel cookie問題

  • 分享至 

  • xImage

我想要儲存登入資訊判斷用戶已登入
我在A頁面做登入並把user_token存在cookie內
在B頁面laravel就抓不到cookie了,想請教原因跟解決辦法
https://ithelp.ithome.com.tw/upload/images/20200225/20122444vNv6rPw7Gv.png

以下是我的程式碼:
儲存cookie的function

public function loginProcess(Request $request){
    $email = $request->email;
    $password = $request->password;
    $user = User::where("email",$email)->first();
    if(is_null($user)) return $this->error("帳號錯誤");
    if($password != decrypt($user->password)) return $this->error("密碼錯誤");
    $token = \Str::random(255);
    User::where("id",$user->id)->update(["token"=>$token]);
    return $this->ok()->cookie('test',123,60);
    //return $this->ok(["user_token"=>$token]);
}
function ok($data=""){
    return $this->result([
        "success" => true,
        "message" => "",
        "data" => $data,
    ],200);
}
function result($data,$status){
    return response()->json($data,$status);
}

應該要接到cookie的function

public function __construct(){
    $this->middleware(function($request,$next){
        dd($request->cookie());
        /*$token = $request->cookie("user_token");
        $user = User::where("token",$token)->first();
        if(!is_null($user)){
            $request->user = $user;
            return $next($request);
        }else{
            return $this->error("尚未登入");
        }*/
    });
}
firecold iT邦新手 1 級 ‧ 2020-02-25 14:32:01 檢舉
試試 Cookie::get('name');
adha9990 iT邦新手 4 級 ‧ 2020-02-25 15:30:45 檢舉
我試過了用Cookie::get('name');或$request->cookie("name");
可以跑出key但value會變成null
再換用原生的$_COOKIE就可以正常跑出key跟value了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
小魚
iT邦大師 1 級 ‧ 2020-02-25 14:40:12

設定cookie是這樣寫的嗎?
我是有找到其他的資料 請求與輸入

$this->ok()->cookie('test',123,60)

至於

$request->cookie("user_token"); 

可以取得Cookie,
但是不知道為什麼被你註解掉了??

不過cookie是明碼儲存,
記得不要放敏感的資料在裡面喔.

adha9990 iT邦新手 4 級 ‧ 2020-02-25 15:52:43 檢舉

因為那一行跑出來的cookie資料是null
https://ithelp.ithome.com.tw/upload/images/20200225/20122444ey7vhw2dO7.png

Str::random(255)過的token算敏感資料嗎?
這個token放在cookie用意是fetch時帶這個進api以進行認證
當後端接到這token會判斷資料庫有沒有一樣的token,進而取出使用著資料進行下一步處理
https://ithelp.ithome.com.tw/upload/images/20200225/20122444vYwuAqUIeO.png

小魚 iT邦大師 1 級 ‧ 2020-02-25 21:42:25 檢舉

要的話最好再經過加密,
如果取不到資料應該是你定義cookie的方式錯了,
可以考慮我給你的那篇文章.

我要發表回答

立即登入回答