摘要:昨天完成了微博登錄,今天講一下字段設計的問題字段如何合理分開首先,假設的字段如下用戶名密碼聯系方式頭像個人信息性別通信地址年齡第三方登錄字段一第三方登錄字段二當然,以上的只是簡單的,當依舊如此,也顯得字段非常多了。
眾所周知,一個成熟的網站必然是支持多種登錄方式的。市場上當然常見的就是有類似于github、微博、qq、微信登錄等。
所以這些天,我會一一根據這些功能進行實操。昨天完成了微博登錄,今天講一下字段設計的問題
1、字段如何合理分開
首先,假設的字段如下:
用戶名
密碼
聯系方式
頭像
個人信息
性別
通信地址
年齡
第三方登錄字段一
第三方登錄字段二
當然,以上的只是簡單的,當依舊如此,也顯得字段非常多了。 在 數據庫 設計原則中必須有隔離性,大量的字段存在對索引非常不友好,容易造成不必要的消耗
根據重要性區別:
用戶名、密碼、通信方式(如作為登錄字段存在的話可存在)、登錄字段一、登錄字段二
以上,足以滿足在登錄條件下的必須,其他的通過關聯查詢,可以輕而易舉的得到
關于地址的設計
必須將地址另做一張表,不能用戶信息共存,地址是一對多的形式存在,可以通過中間表進行關聯或者直接關聯。
2、 如何有效性的解決登錄字段的問題呢
首先,合理共同使用公共代碼。
公共代碼有哪些呢?
加密函數 / 比較密碼正確性
獲取登錄字段類型(使用一個函數,判斷出當前登錄的字段,返回一個字段名即可)
獲取用戶信息
第一步: 獲取當前的字段進行用戶查詢,密碼對比,取得登錄驗證
/** * 返回登錄的字段類型 * * @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; } ...關于注冊的邏輯流程
注冊我采用的是,當第三方登錄授權登錄后,直接給與登錄權限。
注冊用戶,注冊后跳轉到登錄頁面
我采用了可 郵箱 可手機號碼的登錄方式
1) 獲取驗證碼
第一步先,用戶需要填寫郵箱,點擊發送驗證碼按鈕,發送獲得驗證碼。 服務器端收到郵箱后生存緩存有效期,將用戶的郵箱寫入緩存,同時發送郵箱 用戶收到郵箱的驗證碼,寫入注冊字段 提交字段,驗證相關數據的有效性
短信接口采用的騰訊云平臺
原創:轉載請聯系我 1562135624@qq.com
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29615.html
摘要:本文主要關注的是接口測試。所謂接口測試,就是檢查系統提供的接口是否符合事先撰寫的接口文檔。作為接口測試的解決方案,我們必須具備通用性與易用性。 開始 最近幾年,前端測試漸漸被人重視,相關的框架和方法已經比較成熟。斷言庫有should, expect, chai。 單元測試框架有mocha, jasmine, Qunit。 模擬瀏覽器測試環境有Phantomjs, Slimerjs。 集...
摘要:本文主要關注的是接口測試。所謂接口測試,就是檢查系統提供的接口是否符合事先撰寫的接口文檔。作為接口測試的解決方案,我們必須具備通用性與易用性。 開始 最近幾年,前端測試漸漸被人重視,相關的框架和方法已經比較成熟。斷言庫有should, expect, chai。 單元測試框架有mocha, jasmine, Qunit。 模擬瀏覽器測試環境有Phantomjs, Slimerjs。 集...
摘要:我們在使用的很多評論系統中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時,無論一級評論,還是樓中樓的評論,都有可能產生分頁的情況,因此這里也要做好分頁處理。 文章內容由蚊子的博客進行發布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實現前的思考 在經...
摘要:我們在使用的很多評論系統中,目前比較流行的就是樓中樓的方式了,比如百度貼吧,等等。同時,無論一級評論,還是樓中樓的評論,都有可能產生分頁的情況,因此這里也要做好分頁處理。 文章內容由蚊子的博客進行發布,或許你想看看他其他的博客呢: https://www.xiabingbao.com/comments/2017/09/01/blog-comments.html 1. 實現前的思考 在經...
閱讀 3233·2021-09-07 10:10
閱讀 3579·2019-08-30 15:44
閱讀 2577·2019-08-30 15:44
閱讀 2981·2019-08-29 15:11
閱讀 2219·2019-08-28 18:26
閱讀 2744·2019-08-26 12:21
閱讀 1113·2019-08-23 16:12
閱讀 3009·2019-08-23 14:57