后台管理系統第一課:知識點和vue-element-admin


一.后台管理系統的大致功能:

1. 登錄:對用戶身份進行認證;

2. 系統管理:可以新增、修改、刪除、查詢用戶;

3. 角色管理:可以新增、修改、刪除、查詢角色;

4. 菜單管理:可以新增、修改、刪除、查詢菜單;該功能在前后端分離項目開發中,對應的是前端的動態路由。

5. 權限管理:可以新增、修改、刪除、查詢權限;該功能定義的是某一功能模塊下的按鈕,在有一些系統中菜單管理和權限管理可以合並為一個,統稱為權限管理。

6. 數據庫備份:為保證您的數據安全本系統采用了數據庫備份功能;

7. 上傳管理:管理你增加產品時上傳的圖片及其他文件;

8. 網站配置:可以修改網站基礎信息的配置,如:標題、關鍵字、描述、備案號等;

9. 其它業務功能

 

在前后端分離中,解決用戶認證與授權的問題主要是通過無狀態的Session管理機制來進行:

 

 

token失效怎么辦?寫一半文章,token過期,后端會返回來狀態碼,那么我們就需要在響應攔截那里,根據狀態碼,再獲取一個新的token,再重新調用接口

二.無狀態Session管理機制

1.什么是Session?

在網絡應用中,Session被稱為“會話控制”。(session和cookie是一對,這里的session不是sessionstorage)

Session對象存儲特定用戶會話所需的信息。

當用戶在應用程序的Web頁之間跳轉時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

當用戶請求來自應用程序的 Web頁時,如果該用戶還沒有會話,則Web服務器將自動創建一個 Session對象。

當會話過期或被放棄后,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用戶的首選項

例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在Session對象中。

有關使用Session 對象的詳細信息,注意會話狀態僅在支持cookie的瀏覽器中保留

為什么需要Cookie的支持呢?

因為Session是存儲在服務器端的數據,要區分具體數據的所屬關系,那就需要建立一個關聯關系,相當於人和姓名。

只不過在Session的機制中,姓名對應的是Session ID,而具體的人是數據,那當客戶端首次進入服務器端時,服務器端為該客戶端,生成一個ID,並告知客戶端(將ID存儲在Cookie中)這樣服務器端和客戶端就都知道自己的ID了,接下來的操作,服務器端只要獲取Cookie中的ID,就能知道存儲的數據

2.無狀態Session管理機制

前后端分離開發時,由於后端程序並不知道前端的種種操作,如跳轉頁面、是否有權限,但是后端程序又掌握着整個系統的安全、數據、接口等生殺大權,但是后台又不能把用戶信息存儲在Session中,因為Session是在支持Cookie的瀏覽器中才可以保留,因為后端程序是依靠一個Session ID來進行識別用戶的。

但是現在前后端分離,全程都使用Ajax來請求數據,並且有的瀏覽器可能會把Cookie禁用了,這就會導致服務器端識別不了用戶的身份

由於這個原因,就迎來了無狀態的Session機制,所謂的無狀態Session管理機制:就是當用戶帶着身份數據進行登錄時,登錄成功后,服務器端會使用登錄成功的用戶信息,進行特定規則的加密,得出一個加密的串,從而把加密的串返回給前端程序

接下來的操作,前端只需要每次都攜帶着這個加密的串去請求后端接口,后端在獲取到加密的串時進行特定規則解密,解密出來的數據就是用戶的身份數據,接着判斷該數據是否有效。從而決定是否進行接下來的操作。具體流程圖如下:

 

 

 

三. JWT 令牌

1.JWT 是什么

JSON Web Token(JWT)是一個開放的行業標准(RFC 7519),它定義了一種緊湊且獨立的方式,用於在各方之間作為JSON對象安全地傳輸信息。此信息可以通過數字簽名進行驗證和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公鑰/私鑰對進行簽名,防止被篡改。

JWT 官網https://jwt.io  想深入了解的可網站查看

JWT 的構成:JWT 有三部分構成:頭部、有效載荷、簽名 

例如:aaaaa.bbbbbb.cccccccc

頭部:包含令牌的類型(JWT 與加密的簽名算法(如 SHA256 或 ES256),Base64編碼后加入第一部分。

有效載荷:通俗一點講就是token中需要攜帶的信息都將存於此部分,比如:用戶id、權限標識等信息。

注:該部分信息任何人都可以讀出來,所以添加的信息需要加密才會保證信息的安全性 

簽名:用於防止 JWT 內容被篡改, 會將頭部和有效載荷分別進行 Base64編碼,編碼后用 . 連接組成新的字符串,然后再使用頭部聲明的簽名算法進行簽名。在具有秘鑰的情況下,可以驗證JWT的准確性,是否被篡改。

2. JWT 優缺點

JWT 的優點: 

1. JWT 基於 json,非常方便解析。

2. 可以在令牌中自定義豐富的內容,易擴展。

3. 通過非對稱加密算法及數字簽名技術,JWT 防止篡改,安全性高。

4. 資源服務器使用 JWT 可以不依賴認證服務器,即可完成授權。 oauth2

JWT 的缺點:

1. JWT令牌較長,占存儲空間比較大,但是用戶信息是有限的,所以在可接受范圍。

 

明白了上述對JWT的介紹和優缺點,我們Session無狀態的令牌就使用JWT來進行生成

在前后端分離項目中,前端並不需要對JWT令牌進行解密,只需要將JWT令牌存儲在指定的地方即可

3. 什么是身份認證?

身份認證指的是用戶去訪問系統資源時,系統要求驗證用戶的身份信息,用戶身份合法才訪問對應資源。

常見的身份認證一般要求用戶提供用戶名和密碼(或者手機號,微信,qq等等)。系統通過校驗用戶名和密碼來完成認證過程。

4. 什么是用戶授權

當身份認證通過后,去訪問系統的資源,系統會判斷用戶是否擁有訪問該資源的權限,只允許訪問有權限的系統資源,沒有權限的資源將無法訪問,這個過程叫用戶授權。

比如 會員管理模塊有增刪改查功能,有的用戶只能進行查詢,而有的用戶可以進行修改、刪除。一般來說,系統會為不同的用戶分配不同的角色,而每個角色則對應一系列的權限。

四.vue-element-admin

vue-element-admin 是一個后台前端解決方案,它基於 vue 和 element-ui實現。它使用了最新的前端技術棧,內置了 i18n 國際化解決方案,動態路由,權限驗證,提煉了典型的業務模型,提供了豐富的功能組件,它可以幫助你快速搭建企業級中后台產品原型。相信不管你的需求是什么,本項目都能幫助到你.

git clone https://gitee.com/panjiachen/vue-element-admin.git

目錄講解
src : 
    api :  接口js配置
    assets :  靜態資源(該目錄會被webpack打包,public下的不會被webpack打包)
    components : 自定義組件
        BackToTop : 返回首頁 項目需要  Breadcrumb : 面包屑 項目需要
        Charts : 圖表
        DndList : 拖拽列表
        DragSelect : 拖拽選擇
        Dropzone : 拖拽上傳
        ErrorLog : 錯誤日志
        GithubCorner : Github
        Hamburger : 頭部切換左側菜單的按鈕 項目需要 HeaderSearch : 頭部搜索 項目需要
        ImageCropper : 圖片裁剪
        JsonEditor : JSON編輯器
        Kanban : 看板
        MarkdownEditor : Markdown 編輯器
        MDinput : Markdown 輸入
        Pagination : 分頁 (有bug,不好用)
        PanThumb : 縮略圖
        RightPanel : 右側容器 項目需要 Screenfull : 全屏 項目需要
        Share : 分享
        SizeSelect : 尺寸選擇 項目需要
        Sticky : 吸附(當頁面滾動到指定位置,會吸附到指定的位置)
        SvgIcon : Svg圖標 項目需要
        TextHoverEffect : 文本滑過效果
        ThemePicker : 主題選擇器
        Tinymce : 富文本編輯器 項目需要
        Upload : 上傳
        UploadExcel : 上傳Excel
    directive : 自定義指令
    filter : 過濾器
    icons : 圖標
    layout : 布局相關的文件
    router : 路由相關的文件
    store : Vuex
    styles : 樣式代碼
    utils : 工具相關的文件(重點)
    vendor : 導出生成相關
    view :  頁面文件(我們將來的頁面都要放在views里)
        charts : 圖表
        clipboard : 剪貼板
        components-demo : 組件演示
        dashboard : 首頁(儀表盤) 項目需要
        documentation : 文檔
        error-log : 錯誤日志
     error-page : 錯誤頁面 項目需要
        example : 實例
        excel : Excel
        guide : 指南
        icons : 圖標 項目需要 login : 登錄 項目需要
        nested : 嵌套路由
        pdf : pdf
        permission : 權限
        profile : 個人信息 項目需要
        qiniu : 七牛雲配置
        redirect : 重定向
        tab : 標簽
        table : 表格
        theme : 主題
        zip : 壓縮

permission.js : 權限、路由攔截(導航守衛)
settings.js : 全局配置信息

.env.development : 開發環境配置文件
.env.production : 生產環境配置文件                    

 

觀看視頻1  觀看視頻2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM