前の記事 では、WeChat エンタープライズ アカウント開発のための WeChat 出席の Baidu マップの位置付けについて紹介しました。次に、この記事を通じて WeChat エンタープライズ アカウント開発のための WeChat 出席 Cookie の使用方法について学びます。内容は以下の通りです。
WeChat エンタープライズ アカウント開発を使用するたびに WeChat 出席を使用する: WeChat ユーザー情報と Web ページのセッションの関係は、WeChat インターフェースを呼び出しますが、これは少し遅いと WeChat 公式も推奨しています。 Cookie の使用方法については、まったくわかりませんでした。
私は当初、サーバー上のクライアントデータを取得するには 2 つの方法があると考えていました。1 つは URL にクエリ文字列を置く方法で、もう 1 つはフォームに入れて送信する方法です。以前は、主にクライアント側で使用されていましたが、Cookie 内のデータをサーバーに直接送信することはできませんでした。それは、Cookie 内のデータを読み取って、それを隠しフィールドに入れることによって行われます。フォームを作成し、サーバーに投稿します。
明らかに、WeChat 出席は URL を入力するプロセスであり、データを投稿するプロセスはありません。 URL を入力した後でのみ、ユーザーまたは Ajax を介して URL を送信できます。つまり、Cookie内のデータを直接サーバーに送信する方法はないようです。行き詰まりがあるようだ。そこで、Cookie についてもう一度調べてみたところ、Cookie はサーバーに積極的に送信されているようですが、投稿とは別の場所に送信されていることがわかりました。もちろん、関連するドキュメントは見つかりませんでしたが、テストを通じてそれを発見しました。自分でCookieを設定していれば、URLを入力するたびにCookieが送信され、当然サーバー上でCookieの値を読み取ることができます。そのとき初めて、パスワードを記憶するという実際の実装原則を本当に理解しました。 Cookie の値を読み取って非表示フィールドに入れ、ajax 経由でサーバーに送信すればログインの必要がなくなるわけではありません。
Cookie データがサーバーに送信され、セッション ID も Cookie を通じてサーバーに送信されていることがわかります。
フロントエンド js 読み込み、設定方法 Cookie:
function setCookie(name, value) {//两个参数,一个是cookie的名子,一个是值 var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } function getCookie(name) {//取cookies函数 var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; }
CSharp サーバー操作 Cookie:
Set Cookie
HttpCookie cookie = new HttpCookie("UserCode", username); cookie.Expires = DateTime.Now.AddDays(10);// (365 * 24 * 3600); this.Response.AppendCookie(cookie); HttpCookie cookieDeviceId = new HttpCookie("DeviceId", rt.DeviceId); cookieDeviceId.Expires = DateTime.Now.AddDays(10);// (365 * 24 * 3600); this.Response.AppendCookie(cookieDeviceId);
Cookie の読み取り:
HttpCookie ttHttpCookie = this.Request.Cookies.Get("UserCode"); HttpCookie ttHttpCookieDeviceId = this.Request.Cookies.Get("DeviceId"); string code = Request.QueryString["code"]; if (ttHttpCookie == null || ttHttpCookieDeviceId == null) { WeiApi(code); } else { string username = ttHttpCookie.Value; string DeviceId = ttHttpCookieDeviceId.Value; if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(DeviceId)) { WeiApi(code); } else { new AppException("读取Cookies UserCode=" + username + ",DeviceId=" + DeviceId); initSession(username, DeviceId); } }
上記の内容は次のとおりですWeChat エンタープライズ アカウント開発における WeChat 出席 Cookie の使用については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。