❤ソースプロジェクト❤
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