20200814_jeffrey - silenceuncrio/diary GitHub Wiki

0900

禮拜四拜託 leo 的 cgi 已經好囉

http://192.168.0.95:8000/login?current_session={}
response: {cid: "proscend", level: "super_super", gid: []}

試著套用 How to restrict access to routes in react-router? 讓 isms 程式架構更加俐落


感覺這參考資料有點過時了

看一下官方範例 Redirects (Auth)

這一篇 [React] 在 React Router 4 中建立具有權限檢核的 Private Route 組件 也不錯

不過目前 isms 已經使用了 react-router-config

要想使用 authentication 可以參考 Protecting a route with react-router-config? #4962

該 issue 似乎沒有討論出一個結論

但給出了一個思路

1000

RD meeting

1430

參考 Protecting a route with react-router-config? #4962

該 issue 討論串 - gorkalaucirica commented on 27 Mar 2018

已經提出了一個具體的解決方式

{
    {
        path: "/restricted-area",
        render: (props) => isUserLoggedIn() ? <RestrictedArea/> : <Redirect to="/login"/>
    },
    {
        path: "/login",
        component: Login
    }
}

可以來好好 refactoring 一下了


對於 isUserLoggedIn() 這個 api

我想要有個跟 auth 相關的存放處然後做類似以下的使用

  • auth.isAuthed()
    • 是否已經 authenticated 了
  • auth.name
    • 就是 sign in 的 name, 目前是 email 格式
  • auth.level
    • sign in 的 user 的層級 - 目前有 5 種 由高至低為
      • super_super
      • super
      • admin
      • set
      • get

不同的 level 做不一樣的事情具體要在 render 出的 來實現

auth.isAuthed() 把守第一關

還沒 sign in 的話就 redirect 到 sign in page

這樣一來我每個 page 的 main component 都可以不用管要不要 redirect 這件事了


如果一個 page 閒置太久的話 會導致下一次的 cgi 呼叫得到 401 的回應

如果每個 cgi return 我都需要據判斷是否為 401 的話真的很醜

目前還需要思考怎麼來 refactoring

  • 也許我可以把 fetch 這個動作包成一個可以被 render 的 component - 就像 <Redirect 一樣>

1645

fetch 似乎就有 redirect 可以用

fetch api - response