在把環境設置完成後,接著要來建立後台登入頁面
這次製作的網站中,分為前台消費者使用頁面以及後台管理頁面
在製作後台管理頁面時,首先要建立的是登入頁面
後台管理頁面通常是由廠商/客戶端使用,所以我們會在這邊建立一個登入頁面,防止前台的商品被隨便更動
建立登入頁面
建立pages資料夾 & 新增login頁面
1.在components資料夾下,建立一個pages資料夾,之後建立的頁面都會放在這邊
2.新增一個login.vue檔,並到index.js檔中將login檔案import及定義routes路徑。
※ 用 export 可以指派函式、物件或變數,透過 import 宣告給外部檔案引用。
1 | import Login from '@/components/pages/Login'; |
3.這裡使用的是bootstrap example套入樣式至login頁面
https://getbootstrap.com/docs/4.4/examples/
並將example的css樣式用scoped方式只新增在此頁
程式碼如下:
1 | <style scoped> |
結果如下:
前端 axios 請求附帶 Cookies 設定
1.至main.js將前端cookie的開關打開,如此可以透過API的回應檢查目前狀態為登入或登出,甚至可以檢查用戶是否仍持續登入
把 cookie 開關打開的方式:
1 | axios.defaults.withCredentials = true; |
後端設定 token based 的做法 (jwt)
1.先取目前用戶的 token id
2.把 token id 設定 session cookie
3.設定到 request.cookie 裡面
之後用戶呼叫的 api 需要驗證的話,就可以從設定的 request.cookie 的值取出來,用 Node.js 後端做驗證
後端跨域設定:
在 apps.js 設定跨域處理
1 | app.all('*', (req, res, next) => { |
新增API連接
使用參數:
1 | user: { |
並在input中加入:
1 | v-model="user.username" <!-- 帳號 --> |
並製作登入的事件,將事件@submit.prevent="signin"
綁定在form上
結果如下:
1 | <form class="form-signin" @submit.prevent="signin"> |
並在下方export中增加一個 methods,登出事件亦同:
1 | methods: { |
登入驗證&阻擋
初步的登入頁面就製作後,我們要來設置應該登入頁面的驗證及阻擋
這裡會使用的一個功能叫:導航守衛
1.製作導航守衛以驗證使用者是否為登入狀態下進入網址
至main.js使用 router.beforeEach
註冊一個全局前置守衛:
1 | router.beforeEach((to, from, next) => { |
2.並在要阻擋的頁面中設置路由訊息
1 | meta: { requiresAuth: true }, // 路由訊息 |
結果如下:
1 | export default new VueRouter({ |
※ 此時頁面會被阻擋,無法輸入路徑直接跳至該頁面
3.在步驟1的router.beforeEach
中加入if判斷式**
1 | if (to.meta.requiresAuth) { // 若要前往的頁面具有requiresAuth的話,就不會放行 |
如此一來,這個登入頁面就完成阻擋的功能,無法直接輸入網址跳過登入頁到後台管理內頁啦!