いくつかの情報を確認したところ、Web サービスのメソッドを呼び出すたびに顧客確認情報を添付する必要があるようですが、ログインした後は、再度顧客確認情報を提供する必要はありません。セッション中に?
ID をセッション内に保持します
それは Web サービスを提供する側が決定します
それだけではありません!たとえば、基本的な認証を使用してブラウザでアクセスすると、認証ボックスが表示され、認証に合格すると、同じプロセスでアクセス時に再度ボックスが表示されなくなります。また。
私の問題は、curl が Web サービスをリクエストするときに、呼び出しを完了するために毎回検証情報を提供する必要があるように見えることです。 1 回限りの検証ソリューションはありますか?
Cookie をチェックして、HTTP ヘッダーに id のような値があるかどうかを確認します。この値は、リクエストするたびにサーバーに送信する必要があります。
Cookie をチェックして、HTTP ヘッダーに id のような値があるかどうかを確認します。毎回 この値はリクエストごとにサーバーに送信する必要があります
このアイデアはまだ完成していません
あなたはブラウザの検証について話しています
パスワード: $_SERVER['PHP_AUTH_PW']
参考:http://php.net/manual/en/features.http-auth.php
function authenticate() { header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); echo "You must enter a valid login ID and password to access this resource\n"; exit;}if (addslashes($_SERVER['PHP_AUTH_USER'])!= 'adminname' || addslashes($_SERVER['PHP_AUTH_PW'])!= 'adminadmin') { header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); echo "对不起,无权进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的;}else{ echo "进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW']; //后面这半句我是为了测试而加上去的; echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";// echo "Old: {$_REQUEST['OldAuth']}";// echo "<form action='' METHOD='post'>\n";// echo "<input type='hidden' name='SeenBefore' value='1' />\n";// echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";// echo "<input type='submit' value='Re authenticate' />\n";// echo "</form></p>\n"; echo date('h:i:s') . "<br />"; //暂停 10 秒 sleep(10); //重新开始 echo date('h:i:s'); header('WWW-Authenticate: Basic realm=""'); header('HTTP/1.0 401 Unauthorized'); }//可以直接使用试试看是不是你想要的结果
ブラウザの検証について話しています
ユーザー: $_SERVER['PHP_AUTH_USER'] パスワード: $_SERVER[' PHP_AUTH_PW ']
参考: http://php.net/manual/en/features.http-auth.php
おそらく私が望むものではありません。 2 つの質問をしたいと思います:
1. オープン Web サービスの検証メカニズムは何ですか?たとえば、キーは 1 種類であると言いましたが、http 基本検証も 1 種類です。他にはどのような方法がありますか?
2. この目的のためにどのような検証メカニズムがあるのか知りたいです: PHP で Web サービスを呼び出すときに、最初のリクエストでのみ検証情報を送信する必要があり、その後の呼び出しでは検証情報を送信する必要がないという検証メカニズムはありますか?再確認 -- 通常のページ閲覧のプロセスと同様に、ログイン情報を一度入力した後は、タイムアウトしない限り、この Web サイトの他のページにアクセスするために再度ログインする必要はありません。
7 階の ihefe からの返信を引用:
ブラウザの検証について話しています
ユーザー: $_SERVER['PHP_AUTH_USER']
パスワード: $_SERVER['PHP_AUTH_PW']
参照: http://php. net/manual/en/features.http-auth.php
おそらく私が望むものではありません。 2 つの質問をしたいと思います:
1. オープン Web サービスの検証メカニズムは何ですか?ということで...
これは一度だけ検証されましたが、私が提供したコードは試しましたか?最後の
echo date('h:i:s');
header('WWW-Authenticate: Basic realm=""');
も削除します。これはあなたが言及したhttpの基本的な検証です
myservice.php
myproxy.php
myclient.php
ユーザーは、myclient.php (または他の場所) を介して myproxy.php に直接アクセスし、myproxy.php で Cookie とともに Curl を使用できます。
どう思いますか?
lz が言ったことは、リクエストを送信すると、サーバー側でセッションが確立され、クライアントに SID を送信して記録できます。 Cookie 内の SID が期限切れでない限り、検証情報を再度送信する必要はありません。セッションはこのメカニズムを提供します。
lz が言ったことは、リクエストを送信すると、サーバー側でセッションが確立され、クライアントに SID が送信されます。有効期限が切れていない場合は、検証情報を繰り返し送信する必要はありません。セッションはこのメカニズムを提供します。
しかし、セッション メカニズムは Web サービスにどのように適用されるのでしょうか?
セッション内で ID を保持します
まだ十分に明確ではありませんが、「検証がカールプロキシを通過する方法」について私が述べたことと何か違いますか?
毎回パスワードを渡す必要はありません。これにはセキュリティ上のリスクがあります。
残念ながら、PHP は完璧ではありません。