日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core中的验证组件FluentValidation的实战分享

發布時間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core中的验证组件FluentValidation的实战分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天有人問我能不能出一篇FluentValidation的教程,剛好今天在實現我們的.NET Core實戰項目之CMS的修改密碼部分的功能中有用到FluentValidation,所以就以修改用戶密碼為實例來為大家進行一下ASP.NET Core中的驗證組件FluentValidation的實戰分享,希望能對大家有所幫助!由于本文以.NET Core實戰項目之CMS中的項目為例,因此此篇文章會收錄到系列教程的目錄中。

本篇文章已經收納入《.NET Core實戰項目之CMS 第一章 入門篇-開篇及總體規劃》另附上.NET Core實戰項目交流群:637326624 有興趣的朋友可以共同交流技術經驗。
作者:依樂祝
原文地址:https://www.cnblogs.com/yilezhu/p/10397393.html

寫在前面

開始之前還是有必要為大家科普一下FluentValidation的概念,它是一個非常流行的用來構建強類型驗證規則的.NET庫。而且它對ASP.NETCore支持十分友好,可以很方便的進行集成使用,集成后我們可以很方便的對數據模型進行強驗證。
為什么要使用它呢?
因為它足夠簡單,而且功能強大,可以很方便的來為我們建立起強大的實體驗證功能!那么怎么使用它呢?下面我們就通過修改密碼的實例來進行講解!

FluentValidation使用

開始使用之前我們先構思一下密碼修改需要進行的驗證規則:

  • 密碼強度驗證

  • 舊密碼是否跟數據庫中的一樣

  • 新密碼不能跟舊密碼一樣

  • 重復密碼需要跟新密碼一樣

  • 當前頁面用戶必須登錄,用戶ID必須大于0

好了,假設我們需要實現上述的功能驗證,怎么來進行實現呢?當然我們可以通過.net core中的DataAnnoations 進行實現,但是今天我們要使用FluentValidation來實現一番。下面是具體步驟!

使用

  • 首先當然是添加FluentValidation.AspNetCore?Nuget包了:

    Install-Package FluentValidation.AspNetCore
  • 安裝后,需要在應用程序的Startup中的ConfigureServices方法中調用AddFluentValidation內的擴展方法。(這里需要using FluentValidation.AspNetCore),需要注意的是這個擴展方法必須在調用AddMvc?之后進行調用。如下所示:

    注意:

  • AddFluentValidation方法必須在AddMvc之后進行調用

  • 我在AddFluentValidation中加入了兩個配置,都有注釋你應該能看懂。

  • 下面根據我們步驟開始之前的分析創建如下的修改密碼的視圖模型

  • 為這個視圖模型創建一個校驗類,用來添加我們上面列出來的校驗規則,如下所示:



  • 注:上述代碼應該很好理解吧,為了防止有初學者,所以這里再廢話一下:

  • 為每個需要驗證的實體創建一個這樣的類,如我們要驗證的實體是ChangePasswordModel?因此我們創建一個ChangePasswordModelValidation

  • 驗證類需要繼承AbstractValidator<T>?如:ChangePasswordModelValidation : AbstractValidator

  • 在構造函數中寫驗證規則

  • RuleFor()是為當前實體的某一個屬性添加驗證,如:RuleFor(x => x.Id).NotNull().GreaterThan(0)?就是驗證這個實體的Id?這個字段不能為空,而且必須大于0.后面的WithMessage?就是如果前面校驗失敗就返回的錯誤信息

  • 如果要添加自定義的驗證,如:判斷新密碼是否與舊密碼一致,這里就先定義這個校驗方法,如:NewNotEqualsOld?這個方法我們自定義的,然后再RuleFor().Must(NewNotEqualsOld) 即可應用

  • 在我們的修改密碼功能提交的時候應用我們的驗證,只需要正常的使用即可,如:


    如上所示,該怎么用還怎么用,然后再繼續模型校驗的時候會自動應用我們的規則。如果我們定義的規則校驗失敗的話,這時候ModelState.IsValid?會返回false?這時候我們就可以把錯誤信息通過我們在BaseController?中自定義的ToErrorString(ModelState,"||");?方法打印出來。

  • 功能驗證

    這里我們先把前臺的驗證規則都給去掉,然后我們剛開始設計的幾個規則的校驗吧!

    密碼強度驗證

    這里我們簡單的繼續密碼長度的校驗,如長度滿足在:4-32位 ,我們對應的FluentValidation?的驗證規則為RuleFor(x => x.OldPassword).NotEmpty().Length(4, 32)?這里還進行了非空的校驗。如下圖所示:

    舊密碼是否跟數據庫中的一樣

    這個校驗我是在密碼提交后進行的校驗,沒有放在FluentValidation中,所以這塊只展示測試效果圖吧

    新密碼不能跟舊密碼一樣

    這部分我們對應的FluentValidation中的驗證規則是:新增自定義方法,然后調用RuleFor().Must(NewNotEqualsOld).WithMessage("新密碼不能跟舊密碼一樣")
    效果如下所示:

    重復密碼需要跟新密碼一樣

    這部分我們對應的FluentValidation中的驗證規則是:新增自定義方法,然后調用RuleFor().Must(ReEqualsNew).WithMessage("重復密碼必須跟新密碼一樣")
    效果如下所示:

    當前頁面用戶必須登錄,用戶ID必須大于0

    這部分我們對應的FluentValidation中的驗證規則是:RuleFor()..NotNull().GreaterThan(0)
    效果如下所示:

    源碼地址

    這個系列教程的源碼我會開放在GitHub以及碼云上,有興趣的朋友可以下載查看!覺得不錯的歡迎Star
    GitHub:https://github.com/yilezhu/Czar.Cms
    碼云:https://gitee.com/yilezhu/Czar.Cms
    如果你覺得這個系列對您有所幫助的話,歡迎以各種方式進行贊助,當然給個Star支持下也是可以滴!另外一種最簡單粗暴的方式就是下面這種直接關注我們的公眾號了:

    總結

    本篇文章,我通過用戶密碼修改的實例來為大家詳細講解了FluentValidation的使用以及注意事項,希望能對大家有所幫助。因為本篇文章使用我們系列教程中的實例,所以本篇文章會收錄至系列教程的目錄中!本篇文章用了兩個番茄時間才完成。


    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com


    總結

    以上是生活随笔為你收集整理的.NET Core中的验证组件FluentValidation的实战分享的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。