成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

vue-cli vuelidate基于后端數(shù)據(jù)驗(yàn)證注冊(cè)

chunquedong / 2088人閱讀

摘要:介紹在實(shí)現(xiàn)基本的驗(yàn)證之后我們需要去真正實(shí)現(xiàn)項(xiàng)目中的注冊(cè)登錄以及我們的驗(yàn)證流程有的具體的代碼我也會(huì)放到我的上面后端以及數(shù)據(jù)準(zhǔn)備對(duì)于前端的請(qǐng)求以作為后端項(xiàng)目需要對(duì)數(shù)據(jù)進(jìn)行處理和相應(yīng)的反饋我們可以先去創(chuàng)建在項(xiàng)目終端生成后就去定義好字段信息

介紹

在實(shí)現(xiàn)vuelidate基本的驗(yàn)證之后 我們需要去真正實(shí)現(xiàn)項(xiàng)目中的注冊(cè)登錄以及我們的驗(yàn)證流程

有的具體的代碼我也會(huì)放到我的gist上面

后端api以及數(shù)據(jù)準(zhǔn)備

對(duì)于前端的請(qǐng)求 以laravel作為后端項(xiàng)目需要對(duì)數(shù)據(jù)進(jìn)行處理和相應(yīng)的反饋

我們可以先去創(chuàng)建User Model在項(xiàng)目終端:

$ php artisan make:model User -m

生成Model后就去定義好字段信息:

 public function up()
    {
        Schema::create("users", function (Blueprint $table) {
            $table->increments("id");
            $table->string("name");
            $table->string("email")->unique();
            $table->string("password");
            $table->string("avatar");//保存用戶(hù)頭像
            $table->string("confirm_code",64);//郵箱確認(rèn)激活code
            $table->smallInteger("is_confirmed")->default(0);//判斷用戶(hù)呢是否已經(jīng)激活他的郵箱
            $table->integer("followers_count")->default(0);
            $table->integer("followings_count")->default(0);
            $table->rememberToken();
            $table->timestamps();
        });
 }

我們也可以嘗試創(chuàng)建對(duì)應(yīng)的Factory然后可以生成測(cè)試數(shù)據(jù):

$factory->define(AppUser::class, function (FakerGenerator $faker) {
    static $password;

    return [
        "name" => $faker->name,
        "email" => $faker->unique()->safeEmail,
        "avatar" => $faker->imageUrl(256, 256),
        "confirm_code" => str_random(48),
        "password" => $password ?: $password = bcrypt("secret"),
        "remember_token" => str_random(10),
    ];
});

寫(xiě)好模型工廠(chǎng)后我們可以試著生成幾個(gè)測(cè)試數(shù)據(jù) 項(xiàng)目終端:

$ php artisan tinker;
$ namespace App;
$ factory(User::class,4)->create()

現(xiàn)在我們已經(jīng)準(zhǔn)備好測(cè)試數(shù)據(jù) 當(dāng)然你也可以使用注冊(cè)過(guò)后的數(shù)據(jù)

開(kāi)始注冊(cè)之前先去生成對(duì)應(yīng)的Controller

我的laravel后端項(xiàng)目是5.4 而在5.4里面新增了控制器與模型的綁定

在項(xiàng)目終端執(zhí)行:

$ php artisan make:controller UserController --model=User

生成控制器后就去路由定義我們的路由方法:

Route::group(["prefix"=>"user","middleware"=>["api","cors"]], function () {
    Route::post("/register","UserController@store");
});

UserController里面的具體邏輯就是平常的注冊(cè)邏輯:

public function store(Request $request)
    {
        $data = [
            "avatar" => "/images/avatar/default.png",
            "confirm_code" => str_random(48),
        ];
        $user = User::create(array_merge($request->get("user"),$data));
        return json_encode(["user_id"=>$user->id,"status"=>"success"]);
 }

這樣就可以完成注冊(cè)的后端處理邏輯

vue基于后端api數(shù)據(jù)進(jìn)行數(shù)據(jù)檢驗(yàn)

我們的template內(nèi)容基本還是那樣的判斷方式 只不過(guò)在這里我對(duì)字段的唯一性的針對(duì)用戶(hù)名和郵箱

所以我的具體validations是這樣的:

validations: {
    newUser:{
       name: {
            required,
            minLength: minLength(4),
            async isUnique (value) {
               if (value === "") return true
               const response = await fetch(`http://localhost:8000/api/unique/name/${value}`)
               return Boolean(await response.json())
            }
       },
       email: {
            required,
            email,
            async isUnique (value) {
               if (value === "") return true
               const response = await fetch(`http://localhost:8000/api/unique/email/${value}`)
               return Boolean(await response.json())
            }
       },
       password: {
           required,
           minLength: minLength(6)
       },
       confirm_pwd: {
            required,
            sameAsPassword: sameAs("password")
       }
    }
},

當(dāng)然這只是對(duì)字段檢驗(yàn)的要求 后端的檢驗(yàn)路由方法:

Route::group(["prefix"=>"unique","middleware"=>["api","cors"]], function () {
    Route::get("/name/{value}","ValidateController@ValidateName");
    Route::get("/email/{value}","ValidateController@ValidateEmail");
});

這里我是多帶帶生成了一個(gè)Controller去實(shí)現(xiàn)方法邏輯

對(duì)于用戶(hù)名的檢驗(yàn):

public function ValidateName($name)
    {
        $res = User::where("name",$name)->count();
        if($res){
            return response()->json(false);
        }
        return response()->json(true);
}

當(dāng)然對(duì)于郵箱的檢驗(yàn)也是一樣的

這些完成后我們?cè)偃デ岸送瓿晌覀兊淖?cè)方法應(yīng)該就差不多可以了 但其實(shí)并不是

因?yàn)樽?cè)的前提的是每個(gè)字段都符合要求 這樣才可以去進(jìn)行注冊(cè)這個(gè)邏輯

所以在注冊(cè)按鈕添加方法:

這里的$v.newUser其實(shí)就是所有被檢驗(yàn)數(shù)據(jù)的集合 因?yàn)槲业?b>data是這樣被聲明的:

 data(){
    return{
        newUser: {
            name:"",
            email:"",
            password:"",
            confirm_pwd:""
        },
    }
},

這樣完成好后 最終的注冊(cè)邏輯被我放在了register function里面

register:function(value){
    value.$touch();//驗(yàn)證所有信息
    if(!value.$error){
        this.axios.post("http://localhost:8000/api/user/register",{user:this.newUser}).then(response => {
          console.log("data = "+response.data.status)
        })
    }
}

這里的value.$error是對(duì)所有字段的$error的或的結(jié)果 只有所有字段的$errorfalse時(shí) 才能通過(guò)檢驗(yàn)進(jìn)行下一步的注冊(cè)

value.$touch() 其實(shí)是執(zhí)行的設(shè)置其$dirtytrue這些在文檔上也都有介紹

這樣我們?nèi)プ咭幌抡麄€(gè)的注冊(cè)流程

用戶(hù)注冊(cè)

我們已經(jīng)注冊(cè)過(guò)了以為jason的用戶(hù)

數(shù)據(jù)檢驗(yàn)

登錄過(guò)程的基本邏輯也就是我們通常的登錄無(wú)非就是像這樣進(jìn)行數(shù)據(jù)的校對(duì)和數(shù)據(jù)的返回

資料鏈接

vuelidate網(wǎng)址

gist地址1

gist地址2

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22470.html

相關(guān)文章

  • vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案

    摘要:介紹在后端項(xiàng)目里比如我們的框架對(duì)于表單驗(yàn)證有自己的一套機(jī)制他將驗(yàn)證集成在我們只需要在我們的方法中依賴(lài)注入我們自己實(shí)例化后的驗(yàn)證類(lèi)當(dāng)然也可以直接去在方法里去驗(yàn)證表單數(shù)據(jù)而在我們的前端的項(xiàng)目里也就是在我們的項(xiàng)目里也有比較好的驗(yàn)證解決方案也就是這 介紹 在后端項(xiàng)目里 比如我們的Laravel框架 對(duì)于表單驗(yàn)證有自己的一套validation機(jī)制 他將驗(yàn)證集成在FormRequest 我們只...

    zhangwang 評(píng)論0 收藏0
  • Vue后端程序員極速入門(mén)

    摘要:前言因?yàn)槲揖褪侵鞴ズ蠖说某绦騿T,前端感覺(jué)就是知道個(gè)大概就行,所以就是自己學(xué)著些皮毛罷了,想掌握的同學(xué)們建議看其他人的文章嗷。然后我們?cè)谥芯植孔?cè)使用組件如上,引入組件,然后中注冊(cè)組件即可。 ...

    or0fun 評(píng)論0 收藏0
  • Vue+Express全棧購(gòu)物商城

    摘要:一前言提綱基于和框架寫(xiě)的一個(gè)全棧購(gòu)物商城,記錄項(xiàng)目過(guò)程中遇到的一些問(wèn)題以及經(jīng)驗(yàn)和技巧。服務(wù)端技術(shù)棧登錄授權(quán)用認(rèn)證機(jī)制,來(lái)實(shí)現(xiàn)登錄登出。服務(wù)器配置和緩存策略,根據(jù)不同的來(lái)代理。申請(qǐng)證書(shū)全站升級(jí)到,配置的協(xié)議。一、前言提綱 基于Vue和Express框架寫(xiě)的一個(gè)全棧購(gòu)物商城,記錄項(xiàng)目過(guò)程中遇到的一些問(wèn)題以及經(jīng)驗(yàn)和技巧。 二、歷史版本 基于Vue-CLI2.0:點(diǎn)我查看 這個(gè)分支版本是一兩年前...

    Richard_Gao 評(píng)論0 收藏0
  • Vue+Express全棧購(gòu)物商城

    摘要:一前言提綱基于和框架寫(xiě)的一個(gè)全棧購(gòu)物商城,記錄項(xiàng)目過(guò)程中遇到的一些問(wèn)題以及經(jīng)驗(yàn)和技巧。服務(wù)端技術(shù)棧登錄授權(quán)用認(rèn)證機(jī)制,來(lái)實(shí)現(xiàn)登錄登出。服務(wù)器配置和緩存策略,根據(jù)不同的來(lái)代理。申請(qǐng)證書(shū)全站升級(jí)到,配置的協(xié)議。 一、前言提綱 基于Vue和Express框架寫(xiě)的一個(gè)全棧購(gòu)物商城,記錄項(xiàng)目過(guò)程中遇到的一些問(wèn)題以及經(jīng)驗(yàn)和技巧。 二、歷史版本 基于Vue-CLI2.0:點(diǎn)我查看這個(gè)分支版本是一兩...

    luzhuqun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<