米国のグループプロジェクト---ログイン登録3

❤ソースプロジェクト❤
GitHubのアドレスします。https://github.com/Umbrella001/mtapp

A、サーバフォルダのデザイン

1.1は、構成データベース管理ツールおよびオブジェクトモデルマングースを開始するMongoDB:

ここに画像を挿入説明

いくつかの比較的着陸コンフィギュレーション・レジスタ使用するインターフェースで1.2:

ここに画像を挿入説明

二、MongoDBのデータベース、Redisのサービス、SMTPメールサービス

2.1の基本的な構成のMongoDB / Redisの/ SMTPの設定を開始する方法config.js

①のconfigure接続MongoDBのホストとポート
②設定Redisのホストとポート
②の設定を見て、ホストのSMTPサービス・インターフェースへのテンセントのメールインタフェース、登録コードを取得:
ダイレクト・パス:着陸QQメールアカウントを=== === ===セットPOP3が...バーがあること
、デフォルトのサービスが閉鎖されていることで有効化され、2つのサービスを開始するには、プロジェクトの必要性の最初の主要な成果はまた、メール機能を操作し、最後に認証コードを取得することができます
ここに画像を挿入説明

/**
 * describe: 数据库mongodb、redis服务、smtp邮箱服务基本配置
 * author: umbrella
 * date: 2019-6-28
 * --------------------说明------------------------
 * 导出一个对象export default即为配置mongodb的
 * --连接默认mongondb(默认端口27017)/{数据库名称}
 * --配置redis设置只读host(当前主机号)|| 只读端口6379(默认不要乱改)
 * --配置smtp邮箱服务,固定host(stmp.qq.com)|| 开启pop功能的对应邮箱 || 填写功能授权码pass
 *   模拟随机码code方法 || 验证码有效时间expire
 */
export default {
    
    dbs: 'mongodb://127.0.0.1:27017/mtapp', 
    redis:{   
        get host(){
            return '127.0.0.1'  
        },
        get port(){
            return 6379         
        }
    },
    smtp:{
        get host(){
            return 'stmp.qq.com'		// 验证的邮箱服务smtp
        },
        get user(){
            return '[email protected]'  // 发送验证的邮箱
        },
        get pass(){
            return 'hrhypacrzilkedai'   // 授权码
        },
        get code(){
            return ()=>{
                return Math.random().toString(16).slice(2,6).toUpperCase();  // 生成一个16进制的4位大写验证码
            }
        },
        get expire(){
            return ()=>{
                return new Date().getTime()+60*60*1000   // 可设置为 1h 或者 1min 自定
            }
        }

    }
}
2.2インターフェイスは、着陸登録されたユーザのログアウトの検証について書き始めました:

ここに画像を挿入説明

三、マングースユーザーモデル構成

現在インストールされたバージョン:

ここに画像を挿入説明

/**
 * descripe: 创建mongoose数据库模型面板,并配置必须的库类型
 * author: umbrella
 * date: 2018-6-28PM16:42:26
 * -------------------说明------------------
 * --导入所需的moogoose模型包
 * --定义Schema模型,每一个schema对应一个mongoDB collection 并且在那个collection里面定义了documents的模型
 * --填写模型所需要的表结构
 * --导出mongoose模型UserSchema
 */
import mongoose from 'mongoose'
const Schema = mongoose.Schema
const UserSchema = new Schema({
    username:{
        type: String,
        unique: true,
        require: true
    },
    password:{
        type: String,
        require: true
    },
    email:{
        type: String,
        require: true
    }
})

export default mongoose.model('User',UserSchema)

第四に、users.jsのインタフェースインタフェースを実装

そして、パッケージのバージョンの導入:

  • してくださいルータ-7.4.0 @
  • Fredis @ 3.1.2
  • nodemailer @ 4.6.8

5、基本構成axios設定

バージョンをインストールします。

  • axios @ 0.18.0

参考公式サイト:のhttp://www.axios-js.com/zh-cn/

/**
 * descripe: 封装前后端通信axios配置
 * author: umbrella
 * date: 018-6-28PM17:24:28
 * ---------------说明----------------
 * --导入所需的axios包,创建axios实例
 * --配置基础的URL,请求超时timeout,及公共头部headers
 * --参考文档:http://www.axios-js.com/docs/#Creating-an-instance
 * --导出该axios接口实例instance
 */
import axios from 'axios'

const instance = axios.create({
    baseURL: `http://${process.env.HOST||'loclhost'}:${process.env.PORT||3000}`,
    timeout: 1000,
    headers:{}
})

export default instance

第六に、コンフィギュレーション・パスポート関連の設定

必要なパッケージを導く取り付け:

  • してくださいパスポート-4.1.1 ^
  • パスポート、現地^ 1.0.0
/**
 * descripe: 配置相关的passpost
 * author: umbrella
 * date: 018-6-28PM19:44:18
 * ---------------说明----------------
 * --导包passport 适用于koa的passport实现路由进入前登陆验证 || 同理适用于koa的Local策略包 ||
 *   导入mongoose模型
 * --参考passport官网:http://www.passportjs.org/
 * --使用本地策略LocalStrategy实现简单的登陆查询,注册添加的校验
 * --参数说明 username用户输入的账户名 || password用户输入的密码 || done回调函数
 * --导出passport
 */
import passport from 'koa-passport'
import LocalStrategy from 'passport-local'
import UserModel from '../../dbs/models/users'

passport.use(new LocalStrategy(async function(username,password,done){
    // 使用koa特色的异步async和await完成校验
    let where = {
        username
    };
    // 在数据库mongoose模型中查询username用户名
    let result = await UserModel.findOne(where)
    if(result!=null){
        // 用户名存在时,检查数据库存储的密码是否一致
        if(result.password===password){
            return done(null,result)
        }else{
            return done(null,false,'密码错误')
        }
    }else{
        return done(null,false,'用户名不存在')
    }
}))

// 用户每次登陆成功时,将数据存储进筛选中,然后通过筛选读取用户对象序列化及反序列化
passport.serializeUser(function(user,done){
    done(null,user)
})

passport.deserializeUser(function(user,done){
    return done(null,user)
})

export default passport

七、登録の定義、ログイン、ログアウト、確認コードを送信し、ユーザー情報へのアクセス5つのインタフェース

インストールパッケージとバージョン番号が必要です:

  • してくださいルータ-7.4.0 ^
  • Fredis ^ 3.1.3
  • nodemailer ^ 4.6.8

あなたは、コンフィギュレーションを使用する必要があります。User passport axios Email

↓設定し、現在のインターフェイスのパスについての国民は/usersこの5つのプレフィックスインターフェイスは、このパスのステッチ持っている必要がありますので、
ユーザーが保存Redisのコンテナ保管サービス、取得↓
↓のconfigureをルータインターフェイスが必要
↓輸出ルータ

八、最終ルートが書かれたサーバスタートアップファイルindex.jsに追加されます

関連のパッケージを導入します:

  • マングース
  • パラメータは、所望のポスト取得するために導入されていない場合のパラメータは、必要なポストの要求の処理axiosでbodyParser
  • プロジェクトログイン登録とのセッションのセッションではなく、クッキーの、KOAを取ります
  • Redisの
  • JSONは主にサーバー美化クライアントの出力形式にデータを送信します

セッション関連の設定
→設定のセッションストレージ権を

app.keys = ['mt','keyskeys']   // 配置keys两个值,一个是项目的缩写,另外一个是密钥
app.proxy = true  // 允许跨域
app.use(session({key: 'mt',prefix: 'mt:uid', store: new Redis()})) // 给加key值,加前缀好识别,在开启在Redis的储存权限

関連後処理設定
→拡張パラメータポスト獲得の種類と使用JSONライブラリを美しく

app.use(bodyParser({extendTypes:['json','form','text']}))
app.use(json())

モデルオブジェクトは、データベースのMongoDBへの実際の接続マングース
、→公式設定を設定されているデータベースのURLをconfig.jsのをdbconfig.dbs

mongoose.connect(dbConfig.dbs,{
  useNewUrlParser: true
})

パスポート関連の設定
セッションドッキング機能を開くには→初期化パスポートとパスポートを

app.use(passport.initialize())
app.use(passport.session())

ルーティング経路を使用
→ここ文言参照することができます。https://www.jianshu.com/p/fef91266a44cを

app.use(users.routes()).use(users.allowedMethods())

九、Redisのサービスを開始し、データベースのMongoDB

二つのオープンCMD:
スタートはRedisのインストールディレクトリを入力します。CMD:Redisのサーバーが
正常に起動すると、この接続ポートを示すために表示された
ここに画像を挿入説明
中でのMongoDBにcmdと入力を開始:のmongod
:エラー処理...このブログの書き込みを見code100
HTTPS://ブログ.csdn.net / Umbrella_Um /記事/詳細/ 99662011
ここに画像を挿入説明
この図が示すの成功の後、その後のhttpを訪問:127.0.0.1:27017 /ブログはチェックが表示さの部分であります

テン、サービスNPMの実行DEVを開始

成功したスタートに

❤ソースプロジェクト❤
GitHubのアドレスします。https://github.com/Umbrella001/mtapp

公開された134元の記事 ウォン称賛80 ビュー30000 +

おすすめ

転載: blog.csdn.net/Umbrella_Um/article/details/99018052
おすすめ