通常のユーザーと管理者の機能を達成するために、12

マッピングマインド:

 

データベース管理者で、/スキーマ/ 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%}

 

----------------------

注意:

管理者は、最高のクッキーに保存されていません。

 

おすすめ

転載: www.cnblogs.com/500m/p/11007494.html