亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

關(guān)于多字段(第三方登錄)字段設(shè)計的解決

ivydom / 1353人閱讀

摘要:昨天完成了微博登錄,今天講一下字段設(shè)計的問題字段如何合理分開首先,假設(shè)的字段如下用戶名密碼聯(lián)系方式頭像個人信息性別通信地址年齡第三方登錄字段一第三方登錄字段二當(dāng)然,以上的只是簡單的,當(dāng)依舊如此,也顯得字段非常多了。

眾所周知,一個成熟的網(wǎng)站必然是支持多種登錄方式的。市場上當(dāng)然常見的就是有類似于github、微博、qq、微信登錄等。

所以這些天,我會一一根據(jù)這些功能進行實操。昨天完成了微博登錄,今天講一下字段設(shè)計的問題

1、字段如何合理分開

首先,假設(shè)的字段如下:

用戶名

密碼

聯(lián)系方式

頭像

個人信息

性別

通信地址

年齡

第三方登錄字段一

第三方登錄字段二

當(dāng)然,以上的只是簡單的,當(dāng)依舊如此,也顯得字段非常多了。 在 數(shù)據(jù)庫 設(shè)計原則中必須有隔離性,大量的字段存在對索引非常不友好,容易造成不必要的消耗

根據(jù)重要性區(qū)別:

用戶名、密碼、通信方式(如作為登錄字段存在的話可存在)、登錄字段一、登錄字段二

以上,足以滿足在登錄條件下的必須,其他的通過關(guān)聯(lián)查詢,可以輕而易舉的得到

關(guān)于地址的設(shè)計

必須將地址另做一張表,不能用戶信息共存,地址是一對多的形式存在,可以通過中間表進行關(guān)聯(lián)或者直接關(guān)聯(lián)。

2、 如何有效性的解決登錄字段的問題呢

首先,合理共同使用公共代碼。
公共代碼有哪些呢?

加密函數(shù) / 比較密碼正確性

獲取登錄字段類型(使用一個函數(shù),判斷出當(dāng)前登錄的字段,返回一個字段名即可)

獲取用戶信息

第一步: 獲取當(dāng)前的字段進行用戶查詢,密碼對比,取得登錄驗證

/**
 * 返回登錄的字段類型
 * 
 * @param $value
 * @return bool|mixed|string
 */
function checkParamType($value) {

    // 是否郵箱匹配
    if( filter_var($value,FILTER_VALIDATE_EMAIL) ) {
        return "email";
    }
    
    // 判斷是否手機匹配
    $res = filter_var($value,FILTER_CALLBACK,[
        "options" => function ($value){
            if( preg_match("/^1[34578]d{9}$/",$value) ) {
                return "phone";
            }
        }
    ]);

    return is_null($res) ? false : $res;
} 

第二步:解決登錄密碼校驗的問題

我這里將獲取用戶和密碼校驗分離開來,通過字段查詢到用戶,在進行密碼校驗;未查找到,直接返回沒有用戶

...

public static function store(LoginRequest $request)
    {
        $name = $request->name;
        $password = $request->password;
        $field = checkParamType($name) ? checkParamType($name) : "name" ;

        if( !$user = User::getUserInfo($name,$field) ) {
            session()->flash("status","用戶不存在");
            return redirect()->back();
        }
        if( !$user = self::checkPassword($user,$password) ){
            session()->flash("status","密碼錯誤");
            return redirect()->back();
        }

        Auth::login($user);

        return redirect("/");
    }

    ...

    public static function checkPassword($user, $pwd)
    {
        // 加密對比
        if( $user->password === eny($pwd,$user->salt)) {
            return $user;
        }
            return false;
    } 
...
關(guān)于注冊的邏輯流程

注冊我采用的是,當(dāng)?shù)谌降卿浭跈?quán)登錄后,直接給與登錄權(quán)限。

注冊用戶,注冊后跳轉(zhuǎn)到登錄頁面

我采用了可 郵箱 可手機號碼的登錄方式

1) 獲取驗證碼

第一步先,用戶需要填寫郵箱,點擊發(fā)送驗證碼按鈕,發(fā)送獲得驗證碼。 

服務(wù)器端收到郵箱后生存緩存有效期,將用戶的郵箱寫入緩存,同時發(fā)送郵箱

用戶收到郵箱的驗證碼,寫入注冊字段

提交字段,驗證相關(guān)數(shù)據(jù)的有效性

短信接口采用的騰訊云平臺

原創(chuàng):轉(zhuǎn)載請聯(lián)系我 1562135624@qq.com

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/29615.html

相關(guān)文章

  • 關(guān)于前端接口測試探索和挖坑

    摘要:本文主要關(guān)注的是接口測試。所謂接口測試,就是檢查系統(tǒng)提供的接口是否符合事先撰寫的接口文檔。作為接口測試的解決方案,我們必須具備通用性與易用性。 開始 最近幾年,前端測試漸漸被人重視,相關(guān)的框架和方法已經(jīng)比較成熟。斷言庫有should, expect, chai。 單元測試框架有mocha, jasmine, Qunit。 模擬瀏覽器測試環(huán)境有Phantomjs, Slimerjs。 集...

    Crazy_Coder 評論0 收藏0
  • 關(guān)于前端接口測試探索和挖坑

    摘要:本文主要關(guān)注的是接口測試。所謂接口測試,就是檢查系統(tǒng)提供的接口是否符合事先撰寫的接口文檔。作為接口測試的解決方案,我們必須具備通用性與易用性。 開始 最近幾年,前端測試漸漸被人重視,相關(guān)的框架和方法已經(jīng)比較成熟。斷言庫有should, expect, chai。 單元測試框架有mocha, jasmine, Qunit。 模擬瀏覽器測試環(huán)境有Phantomjs, Slimerjs。 集...

    zxhaaa 評論0 收藏0
  • 如何實現(xiàn)一個樓中樓評論系統(tǒng)

    摘要:我們在使用的很多評論系統(tǒng)中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時,無論一級評論,還是樓中樓的評論,都有可能產(chǎn)生分頁的情況,因此這里也要做好分頁處理。 文章內(nèi)容由蚊子的博客進行發(fā)布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實現(xiàn)前的思考 在經(jīng)...

    kohoh_ 評論0 收藏0
  • 如何實現(xiàn)一個樓中樓評論系統(tǒng)

    摘要:我們在使用的很多評論系統(tǒng)中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時,無論一級評論,還是樓中樓的評論,都有可能產(chǎn)生分頁的情況,因此這里也要做好分頁處理。 文章內(nèi)容由蚊子的博客進行發(fā)布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實現(xiàn)前的思考 在經(jīng)...

    高勝山 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<