目前比較主流的專案都是前後端分離的專案,此時會使用token來驗證使用者資訊。這時要想實現單點登入無非就是不同的**能擁有已經登入過**的token和一些使用者資訊,就可以實現不用再登入就能訪問頁面的功能。還是以a、b和c**來舉例吧。
c**作為**訊息的**,需要實現監聽訊息,並且將訪問localstorage資料的結果返回給a或b**,**如下
const option = ,
getdata(key)
}window.addeventlistener('message', function(e)
// 還有一種稍微簡單的方式,使用eval方法執行字串形式的js**
let data = json.parse(e.data);
e.source.postmessage(option[data.name](data.key, data.value), e.origin);
}, false);
這兩個**需要實現給iframe傳送訊息和接收iframe傳送的訊息,給iframe傳送的訊息為要執行的js**,接收的訊息是iframe執行傳送的js**後的返回值,**如下
window.addeventlistener('message', function(e)
// e.data就是子視窗執行**後的返回值
console.log(e.data);
}, false);
var iframe = document.getelementbyid('iframe');
iframe.onload = function()
// 如果c**使用的是eval方法直接執行js**,這兒就可以直接寫js**字串
跨域 Cookie 實現單點登入
單點登入 sso single sign on 對於同乙個客戶端 例如 chrome 瀏覽器 只要登入了乙個子站 例如 a.com 則所有子站 b.com c.com 都認為已經登入。比如使用者在登入 後,跳轉到天貓時就已經登入了。未登入使用者訪問子站 a.com 進行登入,自動跳轉到賬戶中心的統一...
跨域和跨視窗通訊
同源政策 協議相同,埠號相同,網域名稱相同 不同源限制 1.cookie,localstroge,indexdb不能訪問 2.dom iframe不同視窗不能訪問到dom 3.ajax不能請求 規避方法 1.跨域視窗通訊 片段識別符 通過改變子視窗的hash值,把資訊放到hash值上,然後子視窗會監...
SSO C 跨域單點登入 二
開始新建乙個站點sitea,同時引用 前面建的web服務 建立basepage.cs類 頁面基類 public class basepage page 登入站點a user.username else else base.onload e 建立乙個default.aspx頁面 開始新建乙個站點sit...