背景:
现在有一个需求是客户要求使用oauth2.0方式的单点登录进入系统,原先我们都是使用cas方式的单点登录。这里整理下代码:
1.oauth2.0
分为4个步骤:
- 获取第三方token。
为了安全性(不暴露第三方token和secretKey),c此处是后端对第三方提供的API进行处理,前端只去公司后端提供的接口中拿token。 - 拿到第三方token后,跳转到第三方认证平台。
- 跳转到第三方认证平台后,第三方平台在URL地址栏中携带ticket票据返回。
- 从地址栏中拿到票据,绑定用户信息。
拿到token后要把token保存到缓存中,在绑定用户信息时使用。
permission.js中代码实现:
if (window.g.OAUTH_URL) {
if (window.g.OAUTH_URL && !window.location.search) {
let oauthToken = ''
getOauthToken().then((res) => {
if (res.data.status) {
// 1.获取token
if (res.data.data.content) {
oauthToken = res.data.data.content.token
// 2.跳转到认证平台,不可以写在异步获取token的函数外面
window.location.href = window.g.OAUTH_URL + `/unified_identity_logon/#/login?pcToken=${
oauthToken}&applicationCode=${
window.$oauthCmccr}`
localStorage.setItem('Oauth_Token'