前書き#
前回の水文構築 Mix-Space のパートナーの皆さんは、次の問題に遭遇したことがありますか?バックエンドでログインした後、フロントエンドはまだゲスト状態です。そのため、自分のウェブサイトでコメントを投稿することはできません。次のようになります。
皆さんは遭遇したことがあるかどうかわかりませんが、私は 3 回も遭遇しました
解決策#
Shiro テーマでは、以下の方法で直接ログインできます。Kami はテストしていないので、第 2 の方法をスキップすることをお勧めします。
直接ログイン(Shiro)#
開発者の説明によると、左上のアバターをダブルクリックするだけでログインできます。
この方法を更新するときにデモサーバーは削除されているため、友達のサイトを使ってデモを行います
その後、ログインしてください。
API とフロントエンドを同じドメインに変更する#
しかし、この認証はどのように行われるのでしょうか?ああ、とても簡単です。クッキーを使用していますが、フロントエンドとバックエンドの両方に mx-token
というクッキーがあることがわかります。そして、その値はまったく同じです。
無効なマスキングを知っているので、指摘しないでください
この 2 日間、OAuth のメンバーリストを開発しているときにもこの問題に気づきました。つまり、ログイン API とフロントエンドが同じドメインでない場合、クッキーをクロスサイトで使用することはできません。
また、バックエンドの API ディレクトリは /api/v2
ですので、API とフロントエンドを同じドメインに配置できるかもしれません。
明らかに、宝塔はこれを許可していません。
実際には、Nginx の設定ファイルではこれを許可しています。したがって、次のようなトリッキーな操作を実現するために設定ファイルを編集できます。
完全な設定ファイルは次のとおりです。これをフロントエンドサイトのリバースプロキシ設定ファイルに置き換えるだけです(バックエンドをプロキシに渡すこともできます)。
# See: https://github.com/mx-space/docker/blob/master/configs/nginx.conf
# This is a example for nginx configure if you host mx-space manually
location ~* \.(gif|png|jpg|css|js|woff|woff2)$ {
proxy_pass http://127.0.0.1:2323;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
expires 30d;
}
location ~* \/(feed|sitemap|atom.xml) {
proxy_pass http://127.0.0.1:2333/$1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control max-age=60;
}
location / {
proxy_pass http://127.0.0.1:2323;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_intercept_errors on;
}
location /api {
proxy_pass http://127.0.0.1:2333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_intercept_errors on;
}
location /qaqdmin {
proxy_pass http://127.0.0.1:2333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_intercept_errors on;
}
location /socket.io {
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:2333/socket.io;
}
保存したら、サイトに戻ります。
まず、クッキーをすべてクリアします。
リフレッシュ後、 フロントエンドドメイン/qaqdmin
に直接アクセスし、ログインします。
次に、設定→システム→ウェブサイトの設定に移動し、4 つの設定項目のドメインをすべてフロントエンドドメインに変更します。
完了したら、右上の保存ボタンをクリックし、ホームページを開きます。
親しみやすい歓迎メッセージが表示されます。
コメントエリアを見てみましょう。
何ですか?Vercel でフロントエンドを使用している場合はどうすればいいですか?
実際には、方法があります。こちらを参照してください
この記事は Mix Space から xLog に同期されています。
元のリンクは https://blog.nekorua.com/posts/build/73.html です。