JavaScriptがシングルポイント登録を実現した例
1695 ワード
項目の中で単点登録という問題が発生しました。リンクをクリックすると別のシステムに移動し、自動ログインを実現して、直接にシステムのページに入ります。
異なるシステムはドメインをまたぐ問題に関連しているので、nginxを使ってドメインをまたぐ問題を解決します。
先に他のシステムのページにジャンプして、このページでログイン操作を実現してからシステムに必要なページにジャンプします。
もう一つの問題はログインする時にユーザー名とパスワードが必要です。ユーザー名とパスワードは固定されていません。動的に取得する必要があります。だから遷移ページにジャンプする時はパラメータを携帯する必要があります。
携帯パラメータはurlを通じて伝達されます。ここではユーザー名とパスワードは簡単なbase 64を使って暗号化されています。
遷移ページのパラメータ
異なるシステムはドメインをまたぐ問題に関連しているので、nginxを使ってドメインをまたぐ問題を解決します。
先に他のシステムのページにジャンプして、このページでログイン操作を実現してからシステムに必要なページにジャンプします。
もう一つの問題はログインする時にユーザー名とパスワードが必要です。ユーザー名とパスワードは固定されていません。動的に取得する必要があります。だから遷移ページにジャンプする時はパラメータを携帯する必要があります。
携帯パラメータはurlを通じて伝達されます。ここではユーザー名とパスワードは簡単なbase 64を使って暗号化されています。
遷移ページのパラメータ
var params = window.location.search;
const params1 = params.match(/=(\S*)&/)[1];
const params2 = params1.split("=")[1];
const login = params1.split("&")[0];
const pass = params1.split("=")[1];
const url = params.split("url=")[1];
var postData = {
"login": login,
"password": pass
};
postData = (function(obj){ // post .
var str = "";
for(var prop in obj){
str += prop + "=" + obj[prop] + "&"
}
return str;
})(postData);
var xhr = new XMLHttpRequest();
xhr.open("POST", "/api/authentication/login", true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.onreadystatechange = function(){
var XMLHttpReq = xhr;
if (XMLHttpReq.readyState == 4 && XMLHttpReq.status == 200) {
location.replace(url);
}
};
xhr.send(postData);
以上はJavaScriptが単点登録を実現した例の詳細です。JavaScriptについては単独で登録した資料がもっと多いので、他の関連記事に注目してください。