国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - 前後端分離的單頁(yè)應(yīng)用程式如何來判斷目前使用者的登入狀態(tài)?
給我你的懷抱
給我你的懷抱 2017-05-15 17:09:32
0
9
1121

有個(gè)單頁(yè)應(yīng)用的url例如http://cctv.com/!#/car/list,只有在登入的情況下,我才可以去訪問這個(gè)url,如果不是登入狀態(tài),則要跳到登入頁(yè)面。

以前的話,請(qǐng)求url到後臺(tái),後臺(tái)會(huì)判斷下當(dāng)前用戶是否登錄,但是現(xiàn)在做成單頁(yè)應(yīng)用了,也不需要請(qǐng)求到後臺(tái)了,那麼在單頁(yè)應(yīng)用的情況下如何來處理用戶是否已經(jīng)登錄了的狀態(tài)呢?

給我你的懷抱
給我你的懷抱

全部回覆(9)
給我你的懷抱
history.listen(location => {
  const pathname = location.pathname;
  if (pathname !== '/login' && pathname !== '/logout') {
    dispatch({
      type: 'check',
      payload: pathname
    });
  }else if(pathname === '/logout'){
    dispatch({
      type: 'logout',
      payload: pathname
    });
  }
});
*check({ payload }, { select, call, put }) {
  const { isLogin, lastCheck, interval } = yield select( ({ auth }) => auth);
  const now = (new Date()).getTime();
  yield put({
    type: 'authRedirect',
    payload,
  })
  if (!isLogin){
    yield put(routerRedux.push('/login'));
    return ;
  }
  //是否異步檢測(cè)
  if (!interval || (now - lastCheck) < interval  ){
    return;
  }
  const { data, err } = yield call(fresh);
  if (data && data.status==0) {
    yield put({
      type: 'freshSuccess',
      payload: data.data,
    });
    return ;
  }
  yield put(routerRedux.push('/login'));
}
// fresh login status
export async function fresh(params) {
  return request(`/api/auth/fresh?${qs.stringify(params)}`);
}

監(jiān)聽 url 變化,如果不是login logout 就檢查登入狀態(tài)。
檢查登入狀態(tài)

  1. 檢查js變量,沒有登入就直接跳登入頁(yè)

  2. 如果js變數(shù)已經(jīng)登錄,就判斷一下是否需要非同步偵測(cè) 不需要偵測(cè)就結(jié)束(例如上次偵測(cè)是在60秒內(nèi))。

  3. 如果需要非同步檢測(cè),就非同步檢測(cè)是否登錄,如果成功 刷新一下lastcheck時(shí)間。

  4. 如果偵測(cè)沒有登錄,就直接跳登入頁(yè)

伊謝爾倫

登陸後後端api給token,前端儲(chǔ)存token,存取需要登入的傳token過去。前端路由中判斷,是否有token,無就轉(zhuǎn)登入。另外前端有非同步互動(dòng)api的錯(cuò)誤處理,例如後端錯(cuò)誤代碼是token過期了什麼的錯(cuò)誤,前端清除之前token,轉(zhuǎn)登入。

曾經(jīng)蠟筆沒有小新

現(xiàn)在通常的做法是前端把使用者名稱和密碼透過api送到後臺(tái),至於是否保持登入狀態(tài),由後臺(tái)去設(shè)定cookie,前臺(tái)不需要做任何事情

Peter_Zhu

透過localStorange儲(chǔ)存登入狀態(tài),不過毫無安全性可言

伊謝爾倫

登陸狀態(tài)由後端存入cookie就可以了。你不用考慮。

Ty80

讓後臺(tái)set cookie就行了。

後臺(tái)set cookie後,前端在請(qǐng)求的時(shí)候,header都會(huì)自動(dòng)帶過去的。

接著約定一個(gè)狀態(tài)碼,當(dāng)請(qǐng)求回來的是特定的狀態(tài)碼的時(shí)候,就跳到登入頁(yè)面。

phpcn_u1582

無論什麼情況,前端都不知道使用者是誰(shuí),使用者是否登入。那誰(shuí)知道呢?後端!

所以,你每次只要把後端給你的登入態(tài)資訊再給後端,讓後端校驗(yàn)就行了。

1、你可以存在cookie中,每次請(qǐng)求發(fā)出去。當(dāng)然,這個(gè)對(duì)你可以是透明的,讓後端來種cookie,同時(shí)設(shè)定成http only的。

2、因?yàn)槭菃雾?yè),也可以存在記憶體的某個(gè)全域變數(shù)中,如果沒有則未登入。

3、可以自行快取token,每次發(fā)送請(qǐng)求手動(dòng)帶過去。

某草草

具體看你後臺(tái)怎麼支持,token和cookie這兩個(gè)種方法都可以

我想大聲告訴你

loopback+vue+vue-resource,前後端分離模板,vue page分頁(yè)功能,authenticate 權(quán)限控制,accesstoken機(jī)制,credentials,CI,docker

https://github.com/qxl1231/ge...

直接看我這個(gè)專案範(fàn)例就知道啦.整套完整解決方案

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板