亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP Angular - JWT 授權持有者令牌

PHP Angular - JWT 授權持有者令牌

PHP
慕娘9325324 2023-03-11 16:42:23
我正在嘗試獲取由 angular 發送到 php 的授權令牌。我的角度攔截器如下所示intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {    if (localStorage.getItem('token') != null) {        const clonedReq = req.clone({            headers: req.headers.set('Authorization', 'Bearer ' + localStorage.getItem('token'))        });        return next.handle(clonedReq).pipe(            tap(                succ => { },                err => {                    if (err.status == 401){                        localStorage.removeItem('token');                        localStorage.removeItem('username');                        this.router.navigateByUrl('/user/login');                    }                }            )        )    }    else {        return next.handle(req.clone());    }}我控制臺記錄了查看輸出的請求,它有令牌。然后我轉到開發人員工具的網絡選項卡,查看令牌是否在請求中并且它在那里?,F在如何在 php 中獲取令牌?我試著按照這個問題的答案。但這也無濟于事。以下是使用上述答案中的代碼時的輸出。
查看完整描述

2 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

搜索谷歌,在這里我發現你必須在 $_SERVER['HTTP_AUTHORIZATION'] 中接收 JWT 但這至少在我的共享主機中不起作用,我嘗試玩 .htaccess 文件但沒有,你可以查看詳細信息這里 [ Apache 2.4 + PHP-FPM 和授權標頭你也可以通過 JSON 格式的角度將 JWT 發送到你的 php 文件,但如果你想通過 GET 或 POST 發送數據,我建議你使用 HttpClientModule 而不是 HttpRequest,


在 PHP 中,這是我的測試文件,我在 URL 中發送了 JWT,這不是執行令牌的最佳形式,但在我的情況下有效,我希望它有所幫助。


<?php

header("Access-Control-Allow-Origin: *");

header("Content-Type: application/json; charset=UTF-8");

header("Access-Control-Allow-Methods: GET, POST");

header("Access-Control-Max-Age: 3600");

header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");


require_once 'jwt/src/BeforeValidException.php';

require_once 'jwt/src/ExpiredException.php';

require_once 'jwt/src/SignatureInvalidException.php';

require_once 'jwt/src/JWT.php';

use \Firebase\JWT\JWT;


$llave = 'TULLAVESECRETA';


$authHeader = $_GET['tok'];


try{

$decoded = JWT::decode($authHeader, $llave, array('HS256'));

        echo json_encode($decoded);

}

catch(Exception $e){

    http_response_code(200);

    echo json_encode(array(

        "mensaje" => "Vuelve a iniciar sesion.",

        "error" => $e->getMessage()

    ));

}


?>


查看完整回答
反對 回復 2023-03-11
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

在位于 api 文件夾的 .htaccess 文件中包含以下行:


RewriteEngine On

RewriteCond %{HTTP:Authorization} ^(.*)

RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

完整答案在這里:PHP POST 請求中缺少授權標頭

然后你可以用$_SERVER['HTTP_AUTHORIZATION']or讀取你的“Bearer”+token


$requestHeaders = apache_request_headers();

$token = $requestHeaders["Authorization"]; 

您仍然需要從$token.


if (preg_match('/Bearer\s(\S+)/', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {

// alternately '/Bearer\s((.*)\.(.*)\.(.*))/' to separate each JWT string

    $stripped_token =  $matches[1];

}


查看完整回答
反對 回復 2023-03-11
  • 2 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號