摘要:昨天完成了微博登錄,今天講一下字段設(shè)計(jì)的問(wèn)題字段如何合理分開(kāi)首先,假設(shè)的字段如下用戶(hù)名密碼聯(lián)系方式頭像個(gè)人信息性別通信地址年齡第三方登錄字段一第三方登錄字段二當(dāng)然,以上的只是簡(jiǎn)單的,當(dāng)依舊如此,也顯得字段非常多了。
眾所周知,一個(gè)成熟的網(wǎng)站必然是支持多種登錄方式的。市場(chǎng)上當(dāng)然常見(jiàn)的就是有類(lèi)似于github、微博、qq、微信登錄等。
所以這些天,我會(huì)一一根據(jù)這些功能進(jìn)行實(shí)操。昨天完成了微博登錄,今天講一下字段設(shè)計(jì)的問(wèn)題
1、字段如何合理分開(kāi)
首先,假設(shè)的字段如下:
用戶(hù)名
密碼
聯(lián)系方式
頭像
個(gè)人信息
性別
通信地址
年齡
第三方登錄字段一
第三方登錄字段二
當(dāng)然,以上的只是簡(jiǎn)單的,當(dāng)依舊如此,也顯得字段非常多了。 在 數(shù)據(jù)庫(kù) 設(shè)計(jì)原則中必須有隔離性,大量的字段存在對(duì)索引非常不友好,容易造成不必要的消耗
根據(jù)重要性區(qū)別:
用戶(hù)名、密碼、通信方式(如作為登錄字段存在的話可存在)、登錄字段一、登錄字段二
以上,足以滿足在登錄條件下的必須,其他的通過(guò)關(guān)聯(lián)查詢(xún),可以輕而易舉的得到
關(guān)于地址的設(shè)計(jì)
必須將地址另做一張表,不能用戶(hù)信息共存,地址是一對(duì)多的形式存在,可以通過(guò)中間表進(jìn)行關(guān)聯(lián)或者直接關(guān)聯(lián)。
2、 如何有效性的解決登錄字段的問(wèn)題呢
首先,合理共同使用公共代碼。
公共代碼有哪些呢?
加密函數(shù) / 比較密碼正確性
獲取登錄字段類(lèi)型(使用一個(gè)函數(shù),判斷出當(dāng)前登錄的字段,返回一個(gè)字段名即可)
獲取用戶(hù)信息
第一步: 獲取當(dāng)前的字段進(jìn)行用戶(hù)查詢(xún),密碼對(duì)比,取得登錄驗(yàn)證
/** * 返回登錄的字段類(lèi)型 * * @param $value * @return bool|mixed|string */ function checkParamType($value) { // 是否郵箱匹配 if( filter_var($value,FILTER_VALIDATE_EMAIL) ) { return "email"; } // 判斷是否手機(jī)匹配 $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; }
第二步:解決登錄密碼校驗(yàn)的問(wèn)題
我這里將獲取用戶(hù)和密碼校驗(yàn)分離開(kāi)來(lái),通過(guò)字段查詢(xún)到用戶(hù),在進(jìn)行密碼校驗(yàn);未查找到,直接返回沒(méi)有用戶(hù)
... 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","用戶(hù)不存在"); return redirect()->back(); } if( !$user = self::checkPassword($user,$password) ){ session()->flash("status","密碼錯(cuò)誤"); return redirect()->back(); } Auth::login($user); return redirect("/"); } ... public static function checkPassword($user, $pwd) { // 加密對(duì)比 if( $user->password === eny($pwd,$user->salt)) { return $user; } return false; } ...關(guān)于注冊(cè)的邏輯流程
注冊(cè)我采用的是,當(dāng)?shù)谌降卿浭跈?quán)登錄后,直接給與登錄權(quán)限。
注冊(cè)用戶(hù),注冊(cè)后跳轉(zhuǎn)到登錄頁(yè)面
我采用了可 郵箱 可手機(jī)號(hào)碼的登錄方式
1) 獲取驗(yàn)證碼
第一步先,用戶(hù)需要填寫(xiě)郵箱,點(diǎn)擊發(fā)送驗(yàn)證碼按鈕,發(fā)送獲得驗(yàn)證碼。 服務(wù)器端收到郵箱后生存緩存有效期,將用戶(hù)的郵箱寫(xiě)入緩存,同時(shí)發(fā)送郵箱 用戶(hù)收到郵箱的驗(yàn)證碼,寫(xiě)入注冊(cè)字段 提交字段,驗(yàn)證相關(guān)數(shù)據(jù)的有效性
短信接口采用的騰訊云平臺(tái)
原創(chuàng):轉(zhuǎn)載請(qǐng)聯(lián)系我 1562135624@qq.com
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/29615.html
摘要:本文主要關(guān)注的是接口測(cè)試。所謂接口測(cè)試,就是檢查系統(tǒng)提供的接口是否符合事先撰寫(xiě)的接口文檔。作為接口測(cè)試的解決方案,我們必須具備通用性與易用性。 開(kāi)始 最近幾年,前端測(cè)試漸漸被人重視,相關(guān)的框架和方法已經(jīng)比較成熟。斷言庫(kù)有should, expect, chai。 單元測(cè)試框架有mocha, jasmine, Qunit。 模擬瀏覽器測(cè)試環(huán)境有Phantomjs, Slimerjs。 集...
摘要:本文主要關(guān)注的是接口測(cè)試。所謂接口測(cè)試,就是檢查系統(tǒng)提供的接口是否符合事先撰寫(xiě)的接口文檔。作為接口測(cè)試的解決方案,我們必須具備通用性與易用性。 開(kāi)始 最近幾年,前端測(cè)試漸漸被人重視,相關(guān)的框架和方法已經(jīng)比較成熟。斷言庫(kù)有should, expect, chai。 單元測(cè)試框架有mocha, jasmine, Qunit。 模擬瀏覽器測(cè)試環(huán)境有Phantomjs, Slimerjs。 集...
摘要:我們?cè)谑褂玫暮芏嘣u(píng)論系統(tǒng)中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時(shí),無(wú)論一級(jí)評(píng)論,還是樓中樓的評(píng)論,都有可能產(chǎn)生分頁(yè)的情況,因此這里也要做好分頁(yè)處理。 文章內(nèi)容由蚊子的博客進(jìn)行發(fā)布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實(shí)現(xiàn)前的思考 在經(jīng)...
摘要:我們?cè)谑褂玫暮芏嘣u(píng)論系統(tǒng)中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時(shí),無(wú)論一級(jí)評(píng)論,還是樓中樓的評(píng)論,都有可能產(chǎn)生分頁(yè)的情況,因此這里也要做好分頁(yè)處理。 文章內(nèi)容由蚊子的博客進(jìn)行發(fā)布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實(shí)現(xiàn)前的思考 在經(jīng)...
閱讀 3244·2021-09-07 10:10
閱讀 3589·2019-08-30 15:44
閱讀 2592·2019-08-30 15:44
閱讀 3016·2019-08-29 15:11
閱讀 2234·2019-08-28 18:26
閱讀 2754·2019-08-26 12:21
閱讀 1120·2019-08-23 16:12
閱讀 3037·2019-08-23 14:57