解決了
標題不足以回答問題,我將在此處詳細說明。
問題
我有兩個系統,讓我們呼叫它們system A和system B. System A是一個 Petite-vue/Codeigniter 堆疊。System B可能是 Codeigniter 或 Laravel 后端(前端可能會有所不同)。這是顯示設定的圖表(R1將R2在下面解釋)。
注意:在下圖中
R2是從后端發送到system B.

在system A,我正在發出一個異步 Fetch 請求,讓我們呼叫這個請求R1,從 JavaScript(petite-vue)代碼到 PHP(Codeigniter),它在同一個系統中(它是system A)。(代碼如下)
function Connect_To_System(url){
fetch("<?= base_url("connect") ?>",
{
method: "POST",
body: JSON.stringify( {URL: url} )
})
.then(res => res.json())
.then(data => {
// do something with response data like showing a message
})
}
R1在 PHP (Codeigniter) 代碼中處理,該代碼system B通過發送 cURL 請求來建立經過身份驗證的會話,讓我們將此請求R2稱為system B. R2回應回傳 HTTP 200 狀態后,我想將用戶重定向到system A新system B選項卡中。(下面的代碼,注意我使用的是 REST_Controller)
public function connect_post(){
$data = json_decode($this->post()[0]);
$url = $data->URL;
$url_login = $url.'/auth/login';
$token = $this->session->tempdata('token');
$username = $this->current_user['emp_no'];
$digest = md5($username.$token);
$params= array(
"username" => $username,
"token" => $token
);
$result = $this->postCURL($url_login, $params);
// Redirect in a new tab when status is 200 somehow
// Return a response to the JavaScript
}
問題是我無法將用戶從 PHP(Codeigniter)重定向到另一個頁面,因為它是由R1. 因此,我必須將用戶從使用 JavaScript 制作 R1 的視圖中重定向。
但是,第一個問題的解決方案不起作用,因為建立的會話R2與 PHP (Codeigniter) 或 cURL 相關聯,我無法真正分辨,換句話說,建立會話的是服務器而不是用戶。并且使用 JavaScript 重定向用戶會將重定向系結到用戶,或者任何重定向方法。
可能的解決方案(非首選EDIT: It is preferred)
唯一的功能性解決方案是從 JavaScript 建立會話,system B然后重定向用戶,這就是我目前正在做的事情。但問題是我將身份驗證資料暴露給誰只是決定打開瀏覽器檢查。這就是我試圖將所有重要資料保留在后端 PHP 代碼中的原因。
主要目標
我想要的只是一種隱藏身份驗證資料的方法,無論方法是什么,如果真的可能的話。
先感謝您。
uj5u.com熱心網友回復:
事實證明,該問題中提出的解決方案實際上是首選。由于用戶的令牌是如此個性化,甚至存盤在服務器會話中并存盤在資料庫中,因此很難使用其他人的身份驗證資料來驗證您自己。因此,不存在重大的安全漏洞。暴露資料的想法讓我感到害怕,它讓我看不到暴露令牌并不是一個巨大的安全漏洞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431263.html
標籤:javascript php 代码点火器
