マッピングマインド:
データベース管理者で、/スキーマ/ users.js新しいフィールドかどうかであります
VaRのマングース=は( 'マングース')を必要と
//テーブル構造を作成します
module.exportsは=新しいmongoose.Schema({
ユーザ名:文字列、
パスワード:文字列、
/ **
*開発:データ型とデフォルト値を定義します
* /
isAdmin:{
タイプ:ブール、
デフォルト:false
}
})
第二に、データベースに手動でスーパー管理者を追加します。
第三に、Userモデル管理者の導入は、ファイルapp.jsのエントリを確認します
app.use((REQ、RES、次)=> {
//内部のオブジェクトにロードされたメソッドクッキークッキーを呼び出す[REQ]
req.cookies =新しいクッキー(REQ、RES)
//グローバル変数、すべてのルートへのアクセスを作成します。REQオブジェクトにデータを保存
req.userInfo = {}
IF(req.cookies.get( "ユーザー情報")){
{試します
//ログイン・ユーザーのクッキー情報を解析
VARのUserInfo = req.cookies.get( "のUserInfo")
req.userInfo = JSON.parse(decodeURI(ユーザー情報))
console.log( 'app.js、成功した解析userinfo-')
console.log(req.userInfo)
//、ユーザーの現在のタイプを取得します。管理者かどうか
User.findById(req.userInfo._id).then((ユーザー情報)=> {
IF(userInfo.isAdmin == TRUE){
req.userInfo.isAdmin =真
}
次の()// ----- ---- [注データには域外効果がないだろう、)(ここでは次のようにデータの追加が完了]
})
}キャッチ(E){
console.log( "app.js、クッキー情報の解析に失敗しました")
次()
}
}他{
次()
}
})
第四に、フロントデスクでは、ファイル(また、フロントデスクのテンプレートと呼ばれる)/router/main.js、データ収集をルーティング
VaRの急行は=( '表現')が必要です
VARルータ= express.Router()
router.get( '/'、(REQ、RES、次)=> {
メインフォルダに// res.render(「メイン/インデックス」).htmlのサフィックスが//index.html [表さのindex.html:メイン/インデックス注]省略してもよいです。
/ **
*テンプレートへのユーザ情報の割り当て=>方法res.renderの第2引数を介して渡されます
*
*着信オブジェクトが使用するデータテンプレートに割り当てられています
* /
console.log(( 'req.userInfo数据'。+ JSON.stringify(req.userInfo))黄色)
res.render( 'ログイン'、{
UserInfo:req.userInfo
})
})
module.exportsは=ルータ
第五に、フロントファイル/views/login.htmlは、テンプレートデータによって判断されます
{%userInfo._id場合%}
{userInfo.isAdmin%なら%}
<DIV ID = "管理者">
<H5>你好<スパンID = "ユーザ"> {{userInfo.username}} </スパン> </ H5>
あなたがする</a> <BR>管理センターを使用するためにここにクリックすることができますhref="/admin"> <a
<a href="/logout" id="logout">退出登陆する</a>
</ div>
{%他%}
<DIV CLASS = "userinfoを">
<H2>你好<スパンID = "ユーザ"> {{userInfo.username}} </スパン> </ H2>
<a href="/logout" id="logout">退出登陆する</a>
</ div>
{%ENDIF%}
{%他%}
<DIV CLASS = "フォーム" ID = "登録">
<DIV CLASS = "フォームグループ">
<= "ユーザー名" のラベル>用户名</ label>は
<input type = "text" のクラス= "フォームコントロール" ID = "ユーザ名" NAME = "ユーザ名" プレースホルダ= "ユーザー">
</ div>
<DIV CLASS = "フォームグループ">
<= "パスワード" のラベル>密码</ label>は
<input type = "パスワード" クラス= "フォームコントロール" ID = "パスワード" NAME = "パスワード" プレースホルダ= "パスワード">
</ div>
<DIV CLASS = "フォームグループ">
<= "repassword" のラベル>密码</ label>は
<input type = "パスワード" クラス= "フォームコントロール" ID = "repassword" NAME = "repassword" プレースホルダ= "パスワード">
</ div>
<DIV CLASS = "フォームグループ">
<ボタンタイプ= "提出" クラス= "BTN BTN-主">注册</ボタン>
<DIV CLASS = "情報"> </ div>
</ div>
アカウントをお持ちですか?<a class="change" href="javacript:void(0);">はすぐに</a>に上陸しました
</ div>
<DIV CLASS = "フォーム" idは= "ログイン">
<DIV CLASS = "フォームグループ">
<= "ユーザー名" のラベル>用户名</ label>は
<input type = "text" のクラス= "フォームコントロール" ID = "ユーザ名" NAME = "ユーザ名" プレースホルダ= "ユーザー">
</ div>
<DIV CLASS = "フォームグループ">
<= "パスワード" のラベル>密码</ label>は
<input type = "パスワード" クラス= "フォームコントロール" ID = "パスワード" NAME = "パスワード" プレースホルダ= "パスワード">
</ div>
<DIV CLASS = "フォームグループ">
<ボタンタイプ= "提出" クラス= "BTN BTN-主">登陆</ボタン>
</ div>
登録しませんか?<a class="change" href="javacript:void(0);">すぐ登録する</a>
</ div>
{%ENDIF%}
----------------------
注意:
管理者は、最高のクッキーに保存されていません。