若依 ruoyi-vue 用戶賬號前后端參數校驗密碼 手機號 郵箱

在這里插入圖片描述
在這里插入圖片描述

前端

<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body><el-form ref="form" :model="form" :rules="rules" label-width="120px"><el-row><el-col :span="12"><el-form-item label="姓名/名稱" prop="userName"><el-input v-model="form.userName" placeholder="請輸入姓名/名稱"/></el-form-item></el-col><el-col :span="12"><el-form-item label="手機號碼" prop="mobile"><el-input v-model="form.mobile" placeholder="請輸入手機號碼"/></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="郵箱" prop="email"><el-input v-model="form.email" placeholder="請輸入郵箱"/></el-form-item></el-col><el-col :span="12"><el-form-item label="性別" prop="gender"><el-radio v-model="form.gender":label="dict.value"v-for="dict in dict.type.gender":key="dict.value">{{ dict.label }}</el-radio></el-form-item></el-col></el-row><el-row><el-row><el-col :span="12"><el-form-item label="密碼" prop="password"><el-input v-model="form.password" placeholder="請輸入密碼" type="password" maxlength="20"show-password/><password-strength v-model="form.password" style="padding-top: 10px;"></password-strength></el-form-item></el-col><el-col :span="12"><el-form-item label="確認密碼" prop="confirmPassword"><el-input v-model="form.confirmPassword" placeholder="請輸入確認密碼" type="password" maxlength="20"show-password/></el-form-item></el-col></el-row></el-row><el-row><el-col :span="12"><el-form-item label="所屬地域" prop="areaCode"><treeselect v-model="form.areaCode" :options="tzSysTreeDictOptions":normalizer="normalizer" placeholder="請所屬地域"/></el-form-item></el-col><el-col :span="12"><el-form-item label="領域" prop="domain"><el-select v-model="form.domain" placeholder="請選擇領域" style="width:100%"><el-optionv-for="dict in dict.type.tzLyUserDomain":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="證件類型" prop="idType"><el-select v-model="form.idType" placeholder="請選擇證件類型" style="width:100%"><el-optionv-for="dict in dict.type.certType":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="證件號碼" prop="idCard"><el-input v-model="form.idCard" placeholder="請輸入證件號碼" style="width:100%"/></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="民族" prop="ethnicity"><el-select v-model="form.ethnicity" placeholder="請選擇民族" style="width:100%"><el-optionv-for="dict in dict.type.ethnicity":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="政治面貌" prop="politicalStatus"><el-select v-model="form.politicalStatus" placeholder="請選擇政治面貌" style="width:100%"><el-optionv-for="dict in dict.type.politicalStatus":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="職業" prop="occupation"><el-select v-model="form.occupation" placeholder="請選擇職業" style="width:100%"><el-optionv-for="dict in dict.type.trade":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="工作單位(公司)" prop="unit"><el-input v-model="form.unit" placeholder="請輸入工作單位(公司)"/></el-form-item></el-col></el-row><el-row><el-col :span="12"><el-form-item label="職務" prop="job"><el-input v-model="form.job" placeholder="請輸入職務"/></el-form-item></el-col><el-col :span="12"><el-form-item label="個人介紹" prop="introduction"><el-input v-model="form.introduction" placeholder="請輸入個人介紹"/></el-form-item></el-col></el-row></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">確 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog>
 // 表單校驗rules: {userName: [{ required: true, message: '姓名/名稱不能為空', trigger: 'blur' }],mobile: [{ required: true, trigger: 'blur', validator: this.validatePhoneNumber }],password: [{ trigger: 'blur', validator: this.validatePassword }],confirmPassword: [{ trigger: 'blur', validator: this.validateConfirmPassword }],email: [{ required: true, message: '郵箱不能為空', trigger: 'blur' },{pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,message: '請輸入正確的郵箱地址',trigger: ['blur', 'change']}],areaCode: [{ required: true, message: '所屬地域不能為空', trigger: 'blur' }],domain: [{ required: true, message: '領域不能為空', trigger: 'blur' }],idType: [{ required: true, message: '證件類型不能為空', trigger: 'blur' }],idCard: [{ required: true, validator: this.validateChineseIDCard, trigger: 'blur' }]},
 //校驗確認密碼validateConfirmPassword(rule, value, callback) {if (!this.isInsert) {callback()}if (value !== this.form.password) {callback(new Error('密碼和確認密碼不一致'))} else {callback()}},//校驗身份證號碼validateChineseIDCard(rule, value, callback) {if (this.form.idType!=='1'){callback()}const reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/if (!value) {callback(new Error('身份證號碼不能為空'))} else if (!reg.test(value)) {callback(new Error('身份證號碼格式不正確'))} else {callback()}},//校驗密碼validatePassword(rule, value, callback) {if (!this.isInsert) {callback()}// 密碼必須包含數字、小寫字母、大寫字母和特殊字符中的至少三種const reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).{6,20}$/if (!value) {callback(new Error('密碼長度要在 6 到 20 個字符'))} else if (value.length < 6 || value.length > 20) {callback(new Error('密碼長度要在 6 到 20 個字符'))} else if (!reg.test(value)) {callback(new Error('密碼必須包含數字、小寫字母、大寫字母和特殊字符中的至少三種'))} else {callback()}},//校驗手機號碼validatePhoneNumber(rule, value, callback) {const reg = /^1[3-9]\d{9}$/if (!value) {callback(new Error('手機號不能為空'))} else if (!reg.test(value)) {callback(new Error('手機號格式不正確'))} else {callback()}},

后端

枚舉
package com.huida.common.valid;import javax.validation.groups.Default;public interface ValidParameterTzLyUser extends Default {interface User {}interface Group {}
}
實體
    /*** 密碼* 不傳遞密碼給前端,但是后端數據庫查出來使用,允許前端傳密碼過來*/@Size(min = 1, max = 30, message = "密碼長度不能超過30個字符",groups = {ValidParameterTzLyUser.User.class, ValidParameterTzLyUser.Group.class})@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)private String password;/*** 統一社會信用代碼,企業賬號要校驗統一社會信用代碼*/@Size(min = 1, max = 32, message = "統一社會信用代碼不能為空,統一社會信用代碼長度不大于32",groups = {ValidParameterTzLyUser.User.class, ValidParameterTzLyUser.Group.class})private String shxydm;
/*** springboot自帶參數校驗*/private static final javax.validation.Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();public static void validate(TzLyUser tzLyUser) {//校驗參數Set<ConstraintViolation<TzLyUser>> validate = null;if (TzLyConstants.IDENTITY_REGISTER_USERS.equals(tzLyUser.getIdentity())) {validate = VALIDATOR.validate(tzLyUser, ValidParameterTzLyUser.User.class);} else if (TzLyConstants.IDENTITY_AUTH_GROUP.equals(tzLyUser.getIdentity())) {validate = VALIDATOR.validate(tzLyUser, ValidParameterTzLyUser.Group.class);}if (ObjectUtils.isNotEmpty(validate)) {StringBuilder sb =new StringBuilder();for (ConstraintViolation<TzLyUser> violation : validate) {sb.append(violation.getMessage());sb.append("\n");System.out.println(violation.getMessage());System.out.println(violation);}throw new TipUserException(sb.toString());}if (!PhoneUtil.isMobile(tzLyUser.getMobile())) {throw new TipUserException("手機號碼格式不正確");}if (!tzLyUserService.checkMobileUnique(tzLyUser)) {throw new TipUserException("注冊失敗,手機號碼已存在");}String msg = PasswdUtils.verifyPassLevel(tzLyUser.getPassword());if (StringUtils.isNotBlank(msg)) {throw new TipUserException(msg);}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14596.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14596.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14596.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3骨架屏(Skeleton)

效果如下圖&#xff1a;在線預覽 APIs 參數說明類型默認值必傳animated是否展示動畫效果booleantruefalsebutton是否使用按鈕占位圖boolean | SkeletonButtonPropsfalsefalseavatar是否顯示頭像占位圖boolean | SkeletonAvatarPropsfalsefalseinput是否使用輸入框占位圖boolea…

SOLIDWORKS二次開發服務商 慧德敏學

SOLIDWORKS是一套三維設計軟件, 采用特征建模、變量化驅動可方便地實現三維建模、裝配和生成工程圖。SOLIDWORKS軟件本身所具有的交互方式, 可以使用戶對已生成模型的尺寸、幾何輪廓和相互約束關系隨時進行修改, 而不需要編程。但要實現設計意義上的變量化繪圖和系列化設計, 需…

java-查詢字符串當中是否包含中文

文章目錄 前言java-查詢字符串當中是否包含中文 前言 如果您覺得有用的話&#xff0c;記得給博主點個贊&#xff0c;評論&#xff0c;收藏一鍵三連啊&#xff0c;寫作不易啊^ _ ^。 ??而且聽說點贊的人每天的運氣都不會太差&#xff0c;實在白嫖的話&#xff0c;那歡迎常來啊…

軟考系統架構師一些知識點記錄-1

個人隨筆 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 引言 準備去參加軟考的考試&#xff0c;但對一些概念掌握的還不夠&#xff0c;借此機會&#xff0c;整理記錄一二&#xff0c;便于自己理解掌握。 知識范圍 感覺不夠清晰的部分主要是第三篇和第四篇的部分。…

國際頂會認可!KaiwuDB 論文入選 ICDE 2024

導 讀 近日&#xff0c;KaiwuDB 與中國人民大學合作的論文 FOSS: A Self-Learned Doctor for Query Optimizer 被數據庫領域頂會The 40th IEEE International Conference on Data Engineering (ICDE 2024) 錄用啦! 論文中提出了具備自學習、自診斷能力的查詢優化器 FOSS&…

USB官方文檔怎么下載

直接登錄USB官網"https://usb.org/" 如&#xff0c;我需要查找與USB device class相關的文檔 點擊搜索后就能找到。 學習還是要以官方文檔為主&#xff0c;博客上的介紹不可信&#xff0c;USB協議規范很重要!

商品發布功能

文章目錄 1.SPU和SKU介紹1.SPU2.SKU3.兩者之間的關系 2.完成商品發布界面1.組件引入1.commoditylaunch.vue 引入到 src/views/modules/commodity下2.multiUpload.vue 引入到 src/components/upload/multiUpload.vue 2.創建菜單1.創建目錄2.創建菜單&#xff0c;注意菜單路由要匹…

go語言中同一for循環體內的多個初始變量和多個自增變量用法示例

在go語言的for循環體中&#xff0c;我們可以同時初始多個變量&#xff0c; 也可以同時多多個變量進行自增/自減操作&#xff0c; 用法如下&#xff1a; for 后面的多個初始化變量使用的是逗號分隔的批量賦值操作&#xff0c;多個變量自增自減使用 加減運算符和逗號分隔 字符…

MySQL之性能剖析和Schema與數據類型優化(一)

性能剖析總結 1.定義性能最有效的方法是響應時間2.如果無法測量就無法有效地優化&#xff0c;所以性能優化工作需要基于高質量、全方位及完整的響應時間測量3.測量的最佳開始點是應用程序&#xff0c;而不是數據庫。即使問題出在底層的數據庫&#xff0c;借助良好的測量也可以…

C++系列-友元

&#x1f308;個人主頁&#xff1a;羽晨同學 &#x1f4ab;個人格言:“成為自己未來的主人~” 我們在之前的文章有提到友元&#xff0c;我們先來看下面的這段包含了友元的代碼&#xff1a; ??#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace…

CLIP論文學習

學習來自B站bryanyzhu

jdk17安裝教程詳細(jdk17安裝超詳細圖文)

2021年9月14日JDK17 發布&#xff0c;其中不僅包含很多新語言功能&#xff0c;而且與舊版 JDK 相比&#xff0c;性能提升也非常明顯。與之前 LTS 版本的 JDK 8 和 JDK 11 相比&#xff0c;JDK17 的性能提升尤為明顯&#xff0c;本文將教你如何安裝 相比于JDK1.8&#xff0c;JD…

虛擬機網絡設置為橋接模式后未顯示網絡

本方法為&#xff0c;VMware配置正確&#xff0c;但在嘗試其他辦法后未能成功解決的人提供一種方法 本機的虛擬機使用NAT模式正常使用 但是使用橋接模式后重啟&#xff0c;未發現虛擬機內網絡設置,詳見下圖&#xff1a; 使用 ifconfig 查看網絡詳情 發現沒有ens33接口 查看硬…

雙非本科,逆襲中大廠的 Java 學習路線

從零基礎入門 Java&#xff0c;到最后秋招上岸&#xff0c;筆者也是花費了不少的經歷&#xff0c;也走了很多彎路。這一篇文章會記錄下真正有用的學習路線。 為什么要強調真正有用&#xff1f;網上的很多所謂從入門到求職&#xff0c;推薦的路線都超級長&#xff0c;零基礎的同…

LeetCode198:打家劫舍

題目描述 你是一個專業的小偷&#xff0c;計劃偷竊沿街的房屋。每間房內都藏有一定的現金&#xff0c;影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統&#xff0c;如果兩間相鄰的房屋在同一晚上被小偷闖入&#xff0c;系統會自動報警。 給定一個代表每個房屋存…

【學習筆記】Windows GDI繪圖(六)圖形路徑GraphicsPath詳解(中)

上一篇【學習筆記】Windows GDI繪圖(五)圖形路徑GraphicsPath詳解(上)介紹了GraphicsPath類的構造函數、屬性和方法AddArc添加橢圓弧、AddBezier添加貝賽爾曲線、AddClosedCurve添加封閉基數樣條曲線、AddCurve添加開放基數樣條曲線、基數樣條如何轉Bezier、AddEllipse添加橢圓…

華為校招機試 - 最久最少使用緩存(20240508)

題目描述 無線通信移動性需要在基站上配置鄰區(本端基站的小區 LocalCell 與周邊鄰基站的小區 NeighborCelI 映射)關系, 為了能夠加速無線算法的計算效率,設計一個鄰區關系緩存表,用于快速的通過本小區 LocalCell 查詢到鄰小區 NeighborCell。 但是緩存表有一定的規格限…

代碼隨想錄-Day07

454. 四數相加 II 給你四個整數數組 nums1、nums2、nums3 和 nums4 &#xff0c;數組長度都是 n &#xff0c;請你計算有多少個元組 (i, j, k, l) 能滿足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 輸入&#x…

系統磁盤高級管理、lvm例子、創建pv、創建VG、創建lv、磁盤擴展

LVM&#xff1a; 邏輯卷&#xff0c;動態調整分區大小&#xff0c;擴展性好 創建pv pvcreate &#xff1a; 將實體 partition 創建成為 PV &#xff1b; pvscan &#xff1a; 搜尋目前系統里面任何具有 PV 的磁盤&#xff1b; pvdisplay &#xff1a; 顯示出目前系統上面…

GNSS仿真測試之三種常用坐標系與轉換

作者介紹 在當今的全球導航衛星系統&#xff08;GNSS&#xff09;技術領域&#xff0c;仿真測試是評估和驗證GNSS接收機性能的關鍵環節&#xff0c;全球導航衛星系統&#xff08;GNSS&#xff09;仿真測試是確保GNSS接收機和導航解決方案在實際部署前能夠正確、可靠地工作的關鍵…