用戶在系統登錄后,一般會提供一個入口給當前用戶更改當前的密碼,其實更改密碼操作是很簡單的一個處理,不過本篇隨筆主要是介紹結合前后端來實現這個操作,后端是基於ABP框架的,需要對密碼的安全性進行一個設置,否則嚴格的密碼規則非常不友好,畢竟我們系統很多情況下不需要那么復雜的密碼規則。
1、ABP后端的密碼設置和修改密碼處理
//密碼驗證規則 services.Configure<IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequiredLength = 6; });
如果沒有設置上面的操作,那么簡單的密碼修改,是無法通過ABP框架默認密碼規則的檢驗的 。
如果嫌棄這樣的密碼規則太麻煩,那么設置了允許簡單密碼處理,那么一般符合6位密碼都可以順利通過了。
2、前端界面的處理和組件化操作
在管理系統中,一般在用戶頭像附近增加一些常用菜單,其中就包括修改密碼的操作入口。
而往往我們還有其他地方,可能也需要增加對應的修改密碼入口,如在用戶管理的界面下。
也就是說,修改密碼對話框符合組件重用的規則,在多處都可能使用到的。
那么,我們就需要把常用的界面封裝層一個界面組件的方式,方便重用。
修改密碼窗體作為一個組件進行開發,它的界面模板代碼如下所示。
<template> <el-dialog :title="$t('changepass.title')" :visible="isVisible" :modal-append-to-body="false" @close="close"> <el-form ref="form" :model="user" :rules="rules" label-width="160px"> <el-form-item :label="$t('changepass.oldpassword')" prop="oldPassword"> <el-input v-model="user.oldPassword" :placeholder="$t('changepass.oldpassword_tip')" type="password" /> </el-form-item> <el-form-item :label="$t('changepass.newpassword')" prop="newPassword"> <el-input v-model="user.newPassword" :placeholder="$t('changepass.newpassword_tip')" type="password" /> </el-form-item> <el-form-item :label="$t('changepass.confirmpassword')" prop="confirmPassword"> <el-input v-model="user.confirmPassword" :placeholder="$t('changepass.confirmpassword_tip')" type="password" /> </el-form-item> <el-form-item> <el-button type="primary" @click="submitChange">{{ $t('form.save') }}</el-button> <el-button type="danger" @click="close">{{ $t('form.close') }}</el-button> </el-form-item> </el-form> </el-dialog> </template>
這里面使用到了多語言的設置,以便從對應的語言文件中讀取對應的鍵值內容。
例如中文的zh.js里面部分內容如下所示。
切換到英文的話,自動通過多語言的函數,獲取對應英文en.js的文件中的配置值。
其中修改密碼的操作,是通過Api發起后端的數據處理,操作函數如下所示。
submitChange() { var param = { userId: getUserId(), newPassword: this.user.newPassword, currentPassword: this.user.oldPassword } // console.log(param) this.$refs['form'].validate(valid => { if (valid) { user.ChangePassword(param).then(data => { if (data.result) { this.msgSuccess('修改成功') this.$emit('update:visible', false) // 更新 } else { this.msgError('密碼修改失敗') } }) } }) },
前端Api類的接口函數定義如下所示。
ABP后端接口的定義如下所示
修改密碼成功后提示。
這樣就順利完成簡單密碼就可以修改的操作的了。
為了方便讀者理解,我列出一下前面幾篇隨筆的連接,供參考:
循序漸進VUE+Element 前端應用開發(1)--- 開發環境的准備工作
循序漸進VUE+Element 前端應用開發(2)--- Vuex中的API、Store和View的使用
循序漸進VUE+Element 前端應用開發(3)--- 動態菜單和路由的關聯處理
循序漸進VUE+Element 前端應用開發(4)--- 獲取后端數據及產品信息頁面的處理
循序漸進VUE+Element 前端應用開發(5)--- 表格列表頁面的查詢,列表展示和字段轉義處理
循序漸進VUE+Element 前端應用開發(6)--- 常規Element 界面組件的使用
循序漸進VUE+Element 前端應用開發(7)--- 介紹一些常規的JS處理函數
循序漸進VUE+Element 前端應用開發(8)--- 樹列表組件的使用
循序漸進VUE+Element 前端應用開發(9)--- 界面語言國際化的處理
循序漸進VUE+Element 前端應用開發(10)--- 基於vue-echarts處理各種圖表展示
循序漸進VUE+Element 前端應用開發(11)--- 圖標的維護和使用
循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登錄處理
循序漸進VUE+Element 前端應用開發(13)--- 前端API接口的封裝處理
循序漸進VUE+Element 前端應用開發(14)--- 根據ABP后端接口實現前端界面展示
循序漸進VUE+Element 前端應用開發(15)--- 用戶管理模塊的處理
循序漸進VUE+Element 前端應用開發(16)--- 組織機構和角色管理模塊的處理
循序漸進VUE+Element 前端應用開發(17)--- 菜單管理
循序漸進VUE+Element 前端應用開發(18)--- 功能點管理及權限控制
循序漸進VUE+Element 前端應用開發(19)--- 后端查詢接口和Vue前端的整合
使用代碼生成工具快速生成基於ABP框架的Vue+Element的前端界面
循序漸進VUE+Element 前端應用開發(20)--- 使用組件封裝簡化界面代碼
循序漸進VUE+Element 前端應用開發(21)--- 省市區縣聯動處理的組件使用
循序漸進VUE+Element 前端應用開發(22)--- 簡化main.js處理代碼,抽取過濾器、全局界面函數、組件注冊等處理邏輯到不同的文件中
循序漸進VUE+Element 前端應用開發(23)--- 基於ABP實現前后端的附件上傳,圖片或者附件展示管理
循序漸進VUE+Element 前端應用開發(24)--- 修改密碼的前端界面和ABP后端設置處理
循序漸進VUE+Element 前端應用開發(25)--- 各種界面組件的使用(1)
循序漸進VUE+Element 前端應用開發(26)--- 各種界面組件的使用(2)
循序漸進VUE+Element 前端應用開發(27)--- 數據表的動態表單設計和數據存儲
循序漸進VUE+Element 前端應用開發(28)--- 附件內容的管理
循序漸進VUE+Element 前端應用開發(29)--- 高級查詢條件的界面設計
部署基於.netcore5.0的ABP框架后台Api服務端,以及使用Nginx部署Vue+Element前端應用
循序漸進VUE+Element 前端應用開發(30)--- ABP后端和Vue+Element前端結合的分頁排序處理
循序漸進VUE+Element 前端應用開發(31)--- 系統的日志管理,包括登錄日志、接口訪問日志、實體變化歷史日志
循序漸進VUE+Element 前端應用開發(32)--- 手機短信動態碼登陸處理
循序漸進VUE+Element 前端應用開發(33)--- 郵件參數配置和模板郵件發送處理
使用Vue-TreeSelect組件實現公司-部門-人員級聯下拉列表的處理
使用Vue-TreeSelect組件的時候,用watch變量方式解決彈出編輯對話框界面無法觸發更新的問題