国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于koa2開發的用戶中心

davidac / 768人閱讀

摘要:加鹽加密原始密碼加密密碼密碼對比原始密碼加密密碼比對結果密碼匹配密碼不匹配測試用例文件夾工具類的封裝

Ucenter

github

API doc

版本

version content date
v0.1.0 項目遷移構建 17.04.23
v0.2.0 支持通過github授權登錄 17.05.23

model設計

redis

app.js

key type name
apps hash hget apps {appId} =>{app secret}

token.js

key type name
token:${token} hash key為token的值
-access_token hash field access token
-refresh_token hash field refresh token
-app_id hash field token 對應的app
-user_id hash field token對應的user id (objectId)
-user_short_id hash field token對應的user 短id
-expire_at hash field token 到期日期(timestamp)
-type hash field token類型 (access_token/refresh_token)

user.js

key value name
user:total:${app} keys 存儲app對應的用戶總數
${year}-${month}-${today}:${app} bitmap 存儲每個app每日每個用戶的在線狀態和在線總數(詳情可搜索如何用bitmap存儲用戶訪問信息)

mongo

user.js

key type name
_id ObjectId mongo主鍵
short_id Number 用戶短id 基于redis.userTotalCount
name String 用戶名
mobile String 用戶注冊手機
apps Array 用戶關聯的apps,以appId組成的Array
status Number 用戶狀態 0:active 1:baned
create_at Date 用戶創建日期
chance Number 創建的時候隨機生成的0~1數,用于隨機選取用戶
oauth Array 存儲用戶授權平臺的信息
-platform String 授權平臺名稱
-platform_user_id String 平臺的用戶id
-platform_user_name String 平臺用戶名
-email String 用戶在平臺綁定的郵箱
-avatar String 平臺的用戶頭像
-status Number 用戶狀態 0:active 1:baned
-bind_at Date 綁定時間

索引:

    users.index({create_at: -1});
    users.index({name: 1});
    users.index({mobile: 1});
    users.index({"oauth.platform": 1,"oauth.platform_user_id": 1}, {unique: true});

app.js

key type name
_id ObjectId mongo主鍵
app_id String app 獨立的id,每個app唯一
user_id String 關聯用戶表的_id
password String 用戶密碼
status Number 用戶狀態 0:active 1:baned
create_at Date 用戶改app的注冊時間
update_at Date 用戶信息更新時間
last_login Date 上次登錄時間
last_refresh Date 上冊refresh token 時間
login_times Number 登陸次數

索引:

    apps.index({app_id: 1, user_id: 1});

token.js

key type name
_id ObjectId mongo主鍵
user_id String token關聯用戶表的_id
app_id String token關聯的app_id
access_token String access token
refresh_token String refresh token
access_expire_at Date access token 的到期時間
refresh_expire_at Date refresh token 的到期時間
platform Array 使用過的平臺

索引:

    tokens.index({app_id: 1, user_id: 1});

工程目錄

common

const.js 存放靜態變量

error.map.js 存放錯誤碼

config

config.dev.js 存放開發環境配置

config.workong.js 開發環境配置示例

config.production.js 存放生產環境配置

index.js 根據運行環境返回配置文件

controller 業務邏輯存放的文件目錄

dao 數據庫代理文件夾

mongo 對mongo的數據操作

sql 對sql的數據操作

redis 對redis的數據操作

logs 日志文件夾

midware

filter 該文件夾下的文件基于業務分類,封裝了每個接口的數據過濾中間件

auth.js 驗證中間件,驗證token的合法性等用途

log.js 我使用的是使用log4js,所以基于業務配置了不同的appender
這里放一點代碼解釋會實際一點

const log4js = require("log4js"),
      adminLogger = log4js.getLogger("admin"),
      oauthLogger = log4js.getLogger("oauth"),
         commonLogger = log4js.getLogger("common"),
        userLogger = log4js.getLogger("user");
var user = async(ctx, next) => {
      ctx.logger = userLogger;
         await next()
};   

model 數據庫model定義

router 路由定義

service 第三方服務等封裝,例如我把密碼加密,驗證放在了這里做成一個服務,token也封裝成一個服務,這樣以后更改密碼加密形式或者token加密形式的時候就可以直接在這里改。

passport.js

var bcrypt = require("bcrypt");
var Promise = require("bluebird");
var config = require("../config");
Promise.promisifyAll(bcrypt);
/**
 * 加鹽加密
 * @param password {string} 原始密碼
 * @return hash {object} 加密密碼
 * @author gh
 */
var encrypt = async function(password) {
    var salt = await bcrypt.genSaltAsync(config.password.saltTimes);
    var hash = await bcrypt.hashAsync(password, salt);
    return hash;
};
/**
 * 密碼對比
 * @param password {string} 原始密碼
 * @param hash {string} 加密密碼
 * @return res {boolean} 比對結果 true:密碼匹配 | false:密碼不匹配
 * @author gh
 */
var validate = async function(password, hash) {
    var res = await bcrypt.compareAsync(password, hash);
    return res
};
module.exports = {
    encrypt,
    validate
}

test 測試用例文件夾

util 工具類的封裝

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88279.html

相關文章

  • 基于koa2開發用戶中心

    摘要:加鹽加密原始密碼加密密碼密碼對比原始密碼加密密碼比對結果密碼匹配密碼不匹配測試用例文件夾工具類的封裝 Ucenter github API doc 版本 version content date v0.1.0 項目遷移構建 17.04.23 v0.2.0 支持通過github授權登錄 17.05.23 model設計 redis app.js key...

    xiangzhihong 評論0 收藏0
  • 【完結匯總】iKcamp出品基于Koa2搭建Node.js實戰共十一堂課(含視頻)

    摘要:云集一線大廠有真正實力的程序員團隊云集一線大廠經驗豐厚的碼農,開源奉獻各教程。融合多種常見的需求場景網絡請求解析模板引擎靜態資源日志記錄錯誤請求處理。結合語句中轉中間件控制權,解決回調地獄問題。注意分支中的目錄為當節課程后的完整代碼。 ?? ?與眾不同的學習方式,為你打開新的編程視角 獨特的『同步學習』方式 文案講解+視頻演示,文字可激發深層的思考、視頻可還原實戰操作過程。 云...

    sPeng 評論0 收藏0
  • 開始連載啦~每周2更共11堂iKcamp課|基于Koa2搭建Node.js實戰項目教學(含視頻)|

    摘要:玩轉同時全面掌握潮流技術采用新一代的開發框架更小更富有表現力更健壯。融合多種常見的需求場景網絡請求解析模板引擎靜態資源日志記錄錯誤請求處理。結合語句中轉中間件控制權,解決回調地獄問題。注意分支中的目錄為當節課程后的完整代碼。 ?? ?與眾不同的學習方式,為你打開新的編程視角 獨特的『同步學習』方式 文案講解+視頻演示,文字可激發深層的思考、視頻可還原實戰操作過程。 云集一線大廠...

    B0B0 評論0 收藏0
  • iKcamp團隊制作|基于Koa2搭建Node.js實戰項目教學(含視頻)? 環境準備

    安裝搭建項目的開發環境 視頻地址:https://www.cctalk.com/v/15114357764004 showImg(https://segmentfault.com/img/remote/1460000012470016?w=1214&h=718); 文章 Koa 起手 - 環境準備 由于 koa2 已經開始使用 async/await 等新語法,所以請保證 node 環境在 7.6...

    bang590 評論0 收藏0

發表評論

0條評論

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