日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue Element前端應用開發之整合ABP框架的前端登錄

瀏覽:132日期:2022-09-29 17:33:02
目錄概述1、ABP開發框架的回顧2、Vue+Element整合ABP框架的前端登錄處理概述

ABP框架作為后端,是一個非常不錯的技術方向,但是前端再使用Asp.NET 進行開發的話,雖然會快捷一點,不過可能顯得有點累贅了,因此BS的前端選項采用Vue+Element來做管理(后續可能會視情況加入Vue+AntDesign),CS前端我已經完成了使用Winform+ABP的模式了。本篇隨筆主要介紹Vue+Element+ABP的整合方式,先從登錄開始介紹。

1、ABP開發框架的回顧

ABP是ASP.NET Boilerplate的簡稱,ABP是一個開源且文檔友好的應用程序框架。ABP不僅僅是一個框架,它還提供了一個最?菏導?幕?諏煊蚯??杓?DDD)的體系結構模型。

啟動Host的項目,我們可以看到Swagger的管理界面如下所示。

Vue Element前端應用開發之整合ABP框架的前端登錄

我們登錄獲得用戶訪問令牌token后,測試字典類型或者字典數據的接口,才能返回響應的數據。

Vue Element前端應用開發之整合ABP框架的前端登錄

我根據ABP后端項目之間的關系,整理了一個架構的圖形。

應用服務層是整個ABP框架的靈魂所在,對內協同倉儲對象實現數據的處理,對外配合Web.Core、Web.Host項目提供Web API的服務,而Web.Core、Web.Host項目幾乎不需要進行修改,因此應用服務層就是一個非常關鍵的部分,需要考慮對用戶登錄的驗證、接口權限的認證、以及對審計日志的記錄處理,以及異常的跟蹤和傳遞,基本上應用服務層就是一個大內總管的角色,重要性不言而喻。

Vue Element前端應用開發之整合ABP框架的前端登錄

對于通過Winform方式展示界面,以Web API方式和后端的ABP的Web API服務進行數據交互,是我們之前已經完成的項目,項目界面如下所示。

Vue Element前端應用開發之整合ABP框架的前端登錄

主體框架界面采用的是基于菜單的動態生成,以及多文檔的界面布局,具有非常好的美觀性和易用性。

左側的功能樹列表和頂部的菜單模塊,可以根據角色擁有的權限進行動態構建,不同的角色具有不同的菜單功能點,如下是測試用戶登錄后具有的界面。

2、Vue+Element整合ABP框架的前端登錄處理

之前我們開發完成的Vue+Element的前端項目,默認已經具有登錄系統的功能,不過登錄是采用mock方式進行驗證并處理的,本篇隨筆介紹是基于實際的ABP項目進行用戶身份的登錄處理,這個也是開發其他接口展示數據的開始步驟,必須通過真實的用戶身份登錄后臺,獲得對應的token令牌,才能進行下一步接口的開發工作。

例如對應登錄界面上,界面效果如下所示。

Vue Element前端應用開發之整合ABP框架的前端登錄

在用戶登錄界面中,我們處理用戶登錄邏輯代碼如下所示。

// 處理登錄事件 handleLogin() { this.$refs.loginForm.validate(valid => {if (valid) { this.loading = true this.$store .dispatch(’user/login’, this.loginForm) .then(() => { this.$router.push({ path: this.redirect || ’/’ }) this.loading = false }) .catch(() => { this.loading = false })} else { console.log(’error submit!!’) return false} }) }

這里主要就是調用Store模塊里面的用戶Action處理操作。

例如對于用戶store模塊里面的登錄Action函數如下所示。

const actions = { // user login login({ commit }, userInfo) { const { username, password } = userInfo return new Promise((resolve, reject) => { login({ username: username.trim(), password: password }).then(response => {const { result } = response // 獲取返回對象的 resultvar token = result.accessTokenvar userId = result.userId// 記錄令牌和用戶Idcommit(’SET_TOKEN’, token)commit(’SET_USERID’, userId)// 存儲cookiesetToken(token)setUserId(userId)resolve() }).catch(error => {reject(error) }) }) },

而其中login({ username: username.trim(), password: password }) 操作,是通過API封裝處理的調用,使用前在Store模塊中先引入API模塊,如下所示。

import { login, logout, getInfo } from ’@/api/user’

而其中 API模塊代碼如下所示。

export function login(data) { return request({ url: ’/abp/TokenAuth/Authenticate’, method: ’post’, data: { UsernameOrEmailAddress: data.username, password: data.password } })}

這里我們用了一個/abp的前綴,用來給WebProxy的處理,實現地址的轉義,從而可以實現跨站的處理,讓前端調用外部地址就和調用本地地址一樣,無縫對接。

我們來看看vue.config.js里面對于這個代理的轉義操作代碼。

Vue Element前端應用開發之整合ABP框架的前端登錄

而http://localhost:21021/api 地址指向的項目,是我們本地使用ABP開發的一個后端Web API項目,我們可以通過地址http://localhost:21021/swagger/index.html進行接口的查看。

Vue Element前端應用開發之整合ABP框架的前端登錄

我們打開獲取授權令牌的Authenticate接口,查看它的接口定義內容

Vue Element前端應用開發之整合ABP框架的前端登錄

通過標注的1,2,我們可以看到這個接口的輸入參數和輸出JSON信息,從而為我們封裝Web API的調用提供很好的參考。

ABP框架統一返回的結果是result,這個result里面才是返回對應的接口內容,如上面的輸出JSON信息里面的定義。

所以在登陸返回結果后,我們要返回它的result對象,然后在進行數據的處理。

const { result } = response // 獲取返回對象的 result

然后通過result來訪問其他屬性即可。

var token = result.accessToken // 用戶令牌var userId = result.userId // 用戶id

用戶登錄成功后,并獲取到對應的數據,我們就可以把必要的數據,如token和userid存儲在State和Cookie里面了。

// 修改State對象,記錄令牌和用戶Idcommit(’SET_TOKEN’, token)commit(’SET_USERID’, userId)// 存儲cookiesetToken(token)setUserId(userId)

有了這些信息,我們就可以進一步獲取用戶的相關信息,如用戶名稱、介紹,包含角色列表和權限列表等內容了。

例如對應用戶信息獲取接口的ABP后端地址是 http://localhost:21021//api/services/app/User/Get

Vue Element前端應用開發之整合ABP框架的前端登錄

那么我們前端就需要在API模塊里面構建它的訪問地址(/abp/services/app/User/Get)和接口處理了。

export function getInfo(id) { return request({ url: ’/abp/services/app/User/Get’, method: ’get’, params: { id } })}

如上所示,在Store模塊里引入API模塊,如下所示。

import { login, logout, getInfo } from ’@/api/user’

然后在Store模塊中封裝一個Action用來處理用戶信息的獲取的。

// 獲取用戶信息 getInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo(state.userid).then(response => {const { result } = responseconsole.log(result) // 輸出測試if (!result) { reject(’Verification failed, please Login again.’)}const { roles, roleNames, name, fullName } = result// 角色非空提醒處理if (!roles || roles.length <= 0) { reject(’getInfo: roles must be a non-null array!’)}commit(’SET_ROLES’, { roles, roleNames })commit(’SET_NAME’, name)// commit(’SET_AVATAR’, avatar) //可以動態設置頭像commit(’SET_INTRODUCTION’, fullName)resolve(result) }).catch(error => {reject(error) }) }) },

Vue Element前端應用開發之整合ABP框架的前端登錄

Vue + Element前端項目的視圖、Store模塊、API模塊、Web API之間關系如下所示。

Vue Element前端應用開發之整合ABP框架的前端登錄

登錄后我們獲取用戶身份信息,在控制臺中記錄返回對象信息,可以供參考,如下所示

Vue Element前端應用開發之整合ABP框架的前端登錄

有了token信息,我們就可以繼續其他接口的數據請求或者提交了,從而可以實現更多的管理功能了。

以上就是Vue Element前端應用開發之整合ABP框架的前端登錄的詳細內容,更多關于Vue Element的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品日本| 精品视频在线你懂得| 日韩欧美一区二区三区在线观看 | 日本精品不卡| 日韩av在线免费观看不卡| 欧美黑人巨大videos精品| 国产婷婷精品| 天堂8中文在线最新版在线| 亚洲一区二区三区中文字幕在线观看 | 国产精品毛片视频| 四虎精品一区二区免费| 国产精品社区| 日产精品一区| 精品国产免费人成网站| 久久久免费人体| 青青草伊人久久| 亚洲日本国产| 日韩一级精品| 欧美精选一区二区三区| 欧洲一区二区三区精品| 国产传媒av在线| 另类中文字幕国产精品| 成人在线丰满少妇av| 国产精品超碰| 亚洲激情不卡| 久久亚洲二区| 亚洲成人一区| 91精品99| 蜜臀a∨国产成人精品| 日韩一区二区三区免费| 国产一区二区三区国产精品| 日韩av一区二区三区四区| 久久天堂精品| 香蕉视频亚洲一级| 99精品视频在线| 免费毛片在线不卡| 最新亚洲激情| 日本亚洲欧洲无免费码在线| 欧美日韩91| 老司机免费视频一区二区| 久久免费福利| 欧美午夜不卡影院在线观看完整版免费| 美女久久精品| 丝袜诱惑制服诱惑色一区在线观看 | 国产欧美日韩亚洲一区二区三区| 一本色道精品久久一区二区三区| 久久精品三级| 国产精品nxnn| 日韩国产在线一| 亚洲欧美日韩国产一区| 日韩在线精品| 免费福利视频一区二区三区| 国产精品日韩精品中文字幕| 亚洲三级毛片| 国产亚洲第一伦理第一区| 久久婷婷丁香| 久久激情综合网| 人人精品人人爱| 精品视频一区二区三区在线观看| 中文字幕系列一区| 亚洲精品裸体| 日韩欧美字幕| 久久99久久久精品欧美| 蜜芽一区二区三区| 欧美一区久久久| 日本成人精品| 午夜日韩福利| 精品亚洲二区| 亚洲欧洲日韩| 午夜欧美在线| 久久亚洲国产| 精品国产aⅴ| 日本午夜精品视频在线观看| re久久精品视频| 国产成人久久精品麻豆二区 | 日韩avvvv在线播放| 日韩午夜高潮| 免费一二一二在线视频 | 香蕉人人精品| 亚洲精品2区| 一区二区三区四区在线观看国产日韩| 99综合视频| 一本一道久久a久久精品蜜桃| 国产在线成人| 夜久久久久久| 免费在线欧美视频| 亚洲免费福利一区| 国产日产高清欧美一区二区三区| 国产三级一区| 国产成人精品一区二区三区在线| 亚洲女同av| 日韩视频不卡| 国产欧美一区二区三区米奇| 国产一区三区在线播放| 国产一区日韩一区| 日韩精品社区| 日本蜜桃在线观看视频| 水蜜桃久久夜色精品一区的特点| 亚洲91网站| 日韩国产专区| 一区二区亚洲视频| 国产精品qvod| 欧美日韩国产传媒| 久久激情综合网| 欧美一区三区| 欧美在线91| 久久精品国语| 国产精品1区| 视频一区二区三区入口| 精品香蕉视频| 亚洲在线久久| 日韩一区二区三区免费| 亚洲网站视频| 欧美视频二区| 亚洲一区黄色| 欧美色图国产精品| 国产欧美日韩在线观看视频| 日韩久久电影| 日本国产一区| 亚洲欧洲一区二区天堂久久| av中文字幕在线观看第一页 | 视频一区二区欧美| 国产一区二区三区四区五区| 一二三区精品| 日韩成人三级| 日本91福利区| 亚洲精品在线a| 99久久视频| 亚洲在线观看| 国产精品亚洲一区二区在线观看| 久久久777| 国产精品videossex久久发布| 精品国模一区二区三区| 爽好多水快深点欧美视频| 久久黄色影视| 成人在线网站| 国产一区二区视频在线看| 婷婷激情综合| 福利片在线一区二区| 亚洲欧美日韩一区在线观看| 国产精品a久久久久| 成人日韩在线观看| 日韩高清成人在线| 最新亚洲国产| 日韩欧美二区| 国产精品一区二区三区四区在线观看| 亚洲性色视频| 国产精品久久久久久久免费观看| 少妇精品久久久一区二区| 高清不卡一区| 亚洲2区在线| 亚洲一区久久| 蜜臀av免费一区二区三区| 黄色欧美在线| 日韩欧美一区二区三区免费观看| 欧美在线91| 亚州av一区| 久久亚洲图片| 日韩欧美一区二区三区免费观看| 国产亚洲电影| 国产精品一区二区三区av麻| 日韩中文一区二区| 中文字幕乱码亚洲无线精品一区| 日本伊人久久| 日韩一区二区三区免费视频 | 岛国av免费在线观看| 亚洲视频二区| 蜜桃av一区| 欧美国产一级| 亚洲精品在线a| 久久国产尿小便嘘嘘| 国产精品一级| 国产精品毛片久久| 91成人精品观看| 精品久久久久中文字幕小说| 国产精品一区二区精品| 国产 日韩 欧美一区| 日韩欧美一区二区三区免费看| 夜夜嗨av一区二区三区网站四季av| 蜜桃久久精品一区二区| 色欧美自拍视频| 国产麻豆精品| 日韩精品一二三| 米奇777超碰欧美日韩亚洲| 欧美国产中文高清| 婷婷综合国产| 91精品国产自产观看在线| 亚洲精选久久| 牛牛精品成人免费视频| 在线看片日韩| 波多野结衣一区| 久久中文字幕一区二区| 精品九九在线| 国产欧美二区| 国内自拍视频一区二区三区| 国产麻豆一区二区三区精品视频| 日韩毛片视频| 国产精品欧美一区二区三区不卡| 免费日韩视频| 91久久黄色|