1. 程式人生 > >VUE ssr cookie 及 鑑權

VUE ssr cookie 及 鑑權

這篇文章基於vue ssr官方教程,如果您沒看過,可能覺得內容有點莫名其妙,如果您看過的話,應當知道我在說什麼。

由於文件裡沒有cookie相關的內容,也沒有更進一步的講鑑權,所以我結合網上的一些文章,以及自己的專案中的總結,有了這篇文章。

一、首先看如何將COOKIE獲取

1、在檔案 server.js 中,獲取http請求中的cookie

const express = require('express')
var cookieParser = require('cookie-parser') // express 處理cookie

...

const app = express()
app.use(cookieParser())

...

  const context = {
    title: 'Vue HN 2.0', // default title
    url: req.url,
    cookies: req.cookies // 將http請求中的cookie傳入context,等待下一步處理
  }

2,在entry-server.js中處理 cookie

    const { url, cookies } = context
    const { app, router, store } = createApp(cookies && cookies.token) // 將cookie傳入app例項,下一節 鑑權用

...


    store.commit('initToken', cookies) // 將cookie資訊註冊到store裡

3、在 store(store/mutations.js)裡,將cookie資訊儲存

  initToken: (state, authInfo) => {
    state.token = authInfo.token
    Vue.set(state, 'userinfo', authInfo.userinfo)
  }

至此,已經將http請求中的cookie獲取,並儲存在store裡了,下面看鑑權的思路。

二、ssr中如何鑑權

鑑權的思路是放在router的beforeEach,最初是想判斷store裡是否有token和user資訊,但是在beforeEach階段,我還沒有找到辦法去訪問完整的store,所以放棄這個思路,改為判斷cookie。

如果使用者已經登入,那cookie一定已經儲存(如果你和我一樣,採用cookie儲存token的話),所以用cookie判斷使用者登入也很自然,具體是這樣做的:

1、在檔案router/index.js檔案裡,對路由做統一判斷

export function createRouter(token) {} // 將 token 傳如,如果有的話

...

      {
        path: '/user/',
        component: UserCenter,
        meta: {
          requireAuth: true // 標識這個頁面需要許可權
        }
      }

...

  route.beforeEach((to, from, next) => { // 判斷使用者是否登入
    if (to.matched.some(r => r.meta.requireAuth) && !token) {
      next('/')
    }
    next()
  })

2、在檔案enter-server.js裡,傳到cooke裡儲存的token(如果有的話)

    const { app, router, store } = createApp(cookies && cookies.token) // 如果有cookie裡存有token,傳入

3、在entry-client.js檔案裡,傳到客戶端cookie

const { app, router, store } = createApp(window.$cookies.get('token')) // 如果有的話

至此,已經完成了ssr中cookie的獲取、儲存至store、鑑權工作,如果您有更好的思路,歡迎留言交流。

相關推薦

VUE ssr cookie

這篇文章基於vue ssr官方教程,如果您沒看過,可能覺得內容有點莫名其妙,如果您看過的話,應當知道我在說什麼。 由於文件裡沒有cookie相關的內容,也沒有更進一步的講鑑權,所以我結合網上的一些文章,以及自己的專案中的總結,有了這篇文章。 一、首先看如何將COOKIE獲

SpringSecurity動態載入使用者角色許可權實現登入

很多人覺得Spring Security實現登入驗證很難,我最開始學習的時候也這樣覺得。因為我好久都沒看懂我該怎麼樣將自己寫的用於接收使用者名稱密碼的Controller與Spring Security結合使用,這是一個先入為主的誤區。後來我搞懂了:根本不用你自己去寫Controller。你只需要告訴Sp

白話OAuth2使用者認證標準流程

一、OAuth2需求場景 在說明OAuth2需求及使用場景之前,需要先介紹一下OAuth2授權流程中的各種角色: 資源擁有者(User) - 指應用的使用者 認證伺服器 (Authorization Server) - 提供登入認證介面的伺服器,比如:github等 資源伺服器 (Resources S

vue 中 直接操作 cookie 如何使用工具 js-cookie

如何 tps doc basic del window image nor 工具 vue 中直接操作 cookie 以下3種操作方式 set: function (name, value, days) { var d = new Date;

Vue-Axios外掛使用指南,封裝報錯、、跳轉、攔截

熟練使用axios框架,可以讓我們省去很多重複的、繞彎路多的寫法。 前言 不推薦完全copy過去,可以看看我是如何針對我這邊業務; 做的一個axios的封裝及實現的思路 需求及實現 統一捕獲 前言 不推薦完全copy過去,可以看看我是如何針對我這邊業務; 做的一個axi

SaaS開放平臺安全方式: Oauth機制接入說明

SaaS開放平臺鑑權,通常使用Oauth鑑權方式,微信開放平臺、淘寶開放平臺等都採用了這種鑑權方式。下面介紹一下Oauth鑑權的原理以及如何接入。 1. Oauth是什麼 Oauth(開放授權,Open Authorization)是一個開放標準。 允許第三方應用在使用

VUE - 在axios中使用router進行跳轉(二次

前言:在課程設計中,做一個許可權控制,這裡前端我是簡單的用sessionStorage做判斷,但是一般來說前端後臺的狀態並非時刻一致的,例如阿里雲,你不操作五六分鐘,再去執行操作就會提示你需要重新登入了。所以需求就是當我發一個請求給後臺,後臺返回一個碼告訴我需要登入,因為這是一個重複操作

Vue+axios實現登陸攔截,axios封裝(報錯,,跳轉,攔截,提示)

axios封裝 需求及實現 統一捕獲介面報錯 彈窗提示 報錯重定向 基礎鑑權 表單序列化 實現的功能 統一捕獲介面報錯 : 用的axios內建的攔截器 彈窗提示: 引入 Element UI的Message元件 報錯重定向: 路由鉤子

配置 influxDB HTTP API 寫資料的方法

本文簡要描述如何為 InfluxDB 開啟鑑權和配置使用者管理許可權(安裝後預設不需要登入),以及開啟鑑權後如何使用 HTTP API 寫資料。 建立 InfluxDB 管理員賬號 建立 admin 帳號密碼並賦予所有資料庫許可權 建立 CRE

vue之前端

  vue專案前端鑑權方式常用的有以下三種:     1、渲染選單時控制模組按鈕的顯示隱藏(不足:直接輸入連結仍然可以訪問模組)     2、在路由導航守衛中攔截,針對沒有許可權的模組進行重定向(不足:每次訪問模組都需要鑑定許可權,模組數量過多時會影響系統性能)     3、藉助vue-router 2

koa2服務端使用jwt進行路由許可權分發

大體思路   後端書寫REST api時,有一些api是非常敏感的,比如獲取使用者個人資訊,檢視所有使用者列表,修改密碼等。如果不對這些api進行保護,那麼別人就可以很容易地獲取並呼叫這些 api 進行操作。   所以對於一些api,在呼叫之前,我們在服務端必須先對操作者進行“身份認證&rdq

全棧專案|小書架|微信小程式-登入token

小程式登入 之前也寫過微信小程式登入的相關文章: 微信小程式~新版授權使用者登入例子 微信小程式-攜帶Token無感知登入的網路請求方案 微信小程式開通雲開發並利用雲函式獲取Openid 也可以通過官方的這張時序圖瞭解小程式的登入流程: 從流程圖上可以看出微信小程式登入需要先呼叫wx.login()

通俗化講解JWT的使用場景結構安全

一、基於Session的應用開發的缺陷 在我們傳統的B\S應用開發方式中,都是使用session進行狀態管理的,比如說:儲存登入、使用者、許可權等狀態資訊。這種方式的原理大致如下: 使用者登陸之後,將狀態資訊儲存到session裡面。服務端自動維護sessionid,即將sessionid寫入cooki

JS設置讀取刪除cookie表單交互

password ron log getdate date() 一個 func sca 過期 學習cookie和表單交互留下的一點筆記 什麽是cookie?cookie 是存儲於客戶端的變量。當設備請求頁面時,就會發送cookie。首先需要稍微了解一下cookie的結構,簡

Linux2.5隱藏特殊

修改 brush 必須 影響 chmod u+s set 理論 div bsp 隱藏權限lsattr_chattr 語法:chattr [+-=] [Asaci] [文件或者目錄名] # i 增加後,文件不能刪除、重命名、設定鏈接、寫入或者增加數

萌新--關於vue.js入門環境搭建

art 安裝 list 建議 href pack 推薦 新手學 走了 十幾天閉關修煉,惡補了html跟css以及JavaScript相應的基礎知識,恰巧有個群友準備做開源項目,願意帶著我做,但是要求我必須懂vue.js,所以開始惡補vue.js相關的東西。 在淘寶上買了相關

ugo,ACL,3s隱藏

ugo acl 3s及隱藏權限 ugo權限實際上是三個權限的縮寫:user , group ,otherchown 屬主:屬組 文件名 (更改屬主及屬組)chmod -v u+rwx 文件名 更改user用戶的權限chmod -v g+rwx 文件名 更改group組的權限c

Jenkins 不同角色不同視圖不同限設置

isp 用戶數據 image 添加用戶 全局 nbsp sig div 由於 由於jenkins默認的權限管理體系不支持用戶組或角色的配置,因此需要安裝第三發插件來支持角色的配置,本文將使用Role Strategy Plugin,介紹頁面:https://wiki.jen

前後端分離實踐:基於vue實現網站前臺的限管理

Vue.js Javascript做為當下的熱門語言,用途很廣泛,從前端到後端處處可見其存在,該技術如今在我們項目內部也大量使用來開發諸如CMS系統以及其他其他一些數據分析系統的前端頁面,為此個人非常感興趣並將其作為帽子卡的擴展內容來進行課余學習。 Javascript框架鱗次櫛比,但基本原理大致相

ASP.NET MVC:窗體身份驗證角色限管理示例

rms 客戶端請求 系統 contex config 尋找 sign 分享圖片 更多 前言   本來使用Forms Authentication進行用戶驗證的方式是最常見的,但系統地闡明其方法的文章並不多見,網上更多的文章都是介紹其中某一部分的使用方法或實現原理,而更多的朋