後遺症とMySQLを使用したパスポートを使用します
Sequelizeは、約束ベースのnode.js ormです。 PostgreSQL、MySQL、MariadB、SQLite、およびMSSQLで使用できます。このチュートリアルでは、Webアプリのユーザー向けに認証を実装します。また、NodeとMySQLと一緒にノード用の一般的な認証ミドルウェアであるPassportを使用して、ユーザー登録とログインを実装します。エクスプレスフレームワークなので、必要なもののインストールを開始します。
1。 package.json ファイルを生成
アプリのディレクトリを作成します。このディレクトリ内で、ターミナルまたはコマンドプロンプトからこれを実行します。これにより、すぐに実行される一連のプロンプトが表示されます。
- name 。
- を入力するには を使用して 。 server.js 依存関係のインストール
このチュートリアルの主要な依存関係は次のとおりです。ビュー
端末またはコマンドプロンプトからインストールするには、次のように次のように実行します。 -save
npm install express-session - save
npm install bcryptjs - save
npm instrage express handlebars - save
npmインストールmysql2 - save
このプロジェクトにGitを使用している場合は、Express を作成します。次に、Expressを初期化してから、可変パスポートモジュールとパスポートとモデルに割り当てます。これを実行して、すべてが順調かどうかを確認します。モデル
次にやろうとしていることは、ユーザーモデルを作成することです。これは基本的にユーザーテーブルです。これには、基本的なユーザー情報が含まれます。
モデルフォルダーでは、ファイルを作成し、 user.js に名前を付けます。このファイルのフルパスは app/models/user.js 。 autoincrement:true、 馴染みのある「サイトがライブである必要があります。ニース! データベース 順調に見えます "メッセージ。これは、私たちの続編モデルが正常に同期されていることを意味します。データベースをチェックすると、指定された列のユーザーテーブルが表示されます。 up。 最初のことは、authcontroller ファイルをインポートしてサインアップルートを定義することです。 authcontroller.signup); 次に、このルートを server.js にインポートし、 server.js を渡します。 require( './ app/rootes/auth.js')(app); これを実行: :5000/signupにアクセスしてください。 src = "https://img.php.cn/upload/article/000/000/000/174166225185648.png"> サインインフォームの手順を繰り返しましょう。前と同様に、ビューフォルダーに signin.hbs という名前のファイルを作成し、次のHTMLコードを貼り付けます: app/controllers/authcontroller.js 。 thenこれ: bcryptjs 、これはパスワードを保護する必要があります。 module.exports このようにブロック>このようにブロックします。 this:
primarykey:true、
type:sequelize.integer
}、
firstName:{
type:sequelize.string、
notempty:true
}、
lastName:{
type:sequelize.string:
Sequelize.text
}、
about:{
type:sequelize.text
}、
email:{ type:sequelize.string、
isemail:true
}
}、
last_login:{
type:sequelize.date
}、
status:{
type:sequelize.enum( 'active'、 'inactive')、
defaultValue: 'Active'
});
return user;
} server.js
};
node server.js <br>
&lt;!doctype html&gt; <br>&lt; &lt; link rel = "styleSheet" href = "/styles.css"&gt; <br>&lt;/head&gt; <br>&lt; body&gt; <br>&lt; h2&gt; Passport with Sequelize and mysql&lt;/h2&gt; action = "Signin"&gt; <br>&lt; label for = "Email"&gt;電子メールアドレス&lt;/lt;/lavel&gt; <br>&lt; input class = "text" name "type =" text "/&gt; <br>&lt; label for =" password "&gt&lt&gt; <br> <br> <br>&lt" passwor /&gt; <br>&lt; input class = "btn" type = "submit" value = "sign in"/&gt; <br>&lt;/gt; <br>&lt;/gt; <br>&lt;/html&gt; <br>
exports.signin = function(req、res){<br> res.render( 'signin'); <br>}; <br>
passport.use( 'local-signup'、new localstrategy(<br> {<br> usernamefield: 'email'、<br> <brasshfield> passreqtocallback:true:true //リクエスト全体をコールバック<br>)、<br> <br>パスワードフィールド(パスポート変数)は。</brasshfield>
最後の変数ユーザー、ユーザーが既に存在するかどうかを確認します。 done(null、false、{
message: 'その電子メールは既に取得されている'
});
} req.body.lastname
};
user.create(data).then(function(newuser、created){
if(!newuser){
return done(null、false);
}
if(newuser){
return done);
}
});
req.body オブジェクト。これには、サインアップフォームからの入力が含まれています。
ルート
code Import
//パスポート戦略が必要
( './ app/config/config/passport/passport.js')(パスポート) Models.User);
your server.js は次のようになります。 =要求( 'Express handlebars');
app.use(express.urlencoded({
extended:true
})
app.use(express.json());
// passport
app.use(session({
secret: 'keyboard cat'、
resage:true、
true
})); //セッションシークレット
app.use(passport.initialize());
app.use(passport.session()); //永続的なログインセッション
// for handlebars
app.set( 'views'、 './app/views');
app.engine( 'hbs'、exphbs.engine({
extname: '.hbs'、
defaultlayout:fals、
layoutsdir: "Views/layouts/"
})))));
app.set( 'View Engine'、 '.hbs');
app.get( '/'、function(req、res){
res.send( 'Passport with Passport with Passport');
});
//モデル
authRoute = require( './ app/routes/auth.js')(app);
//パスポート戦略
require( './ app/config/passport/passport.js')(パスポート、モデル。 fine ');
})。 console.log(err);
});
これで、実際に/signup ルートに戦略を適用します。
最初に、 app/routes/auth.js に移動し、このようなサインアップに投稿するルートを追加します。 }
));
パスポートが必要なので、この方法に渡す必要があります。このスクリプトにパスポートをインポートするか、server.jsから渡すことができます。後者をしましょう。
このファイルでエクスポートされる関数を変更してください app/routes/auth.js パスポートをパラメーターとして持つようにします。 app/routes/auth.js のコードは、変更後にこのように見えます。 authcontroller.signin);
app.post( '/signup'、passport.authenticate( 'local-signup'、{
successredirect: '/dashboard'、
failureredirect: '/signup'
}
));
}; module.exports ブロック、他のすべてのコード行の下。これ:
app.get( '/dashboard'、isloggedin、authcontroller.dashboard); <br>
今度は、アプリを再度実行して、ダッシュボードページにアクセスしようとしてログインしないようにすると、サインインページにリダイレストする必要があります。最終部品:サインイン
最初に、 config/config/passport/passport.js
// local signin <br> cassport.use( 'local-signin'、new localstrategy(<br> <br> {<br> {<br> {<br> {<br> by default by we we we we we we we we we we we we we we we we we we we we we wuse suse)を実装する時が来ました。電子メール<br> usernamefield: 'email'、<br> passwordfield: 'password'、<br> passreqtocallback:true //コールバック<br>}、<br>}、<br> function(req、email、password、done){<br> varuser = user; <br> var isvalidpassword = function(userspass、pardfard、pardferd、pardferpper userpass); <br>} <br> user.findone({<br> where:{<br> email:email <br>} <br>})。 (!isValidPassWord(user.password、password)){<br> return done(null、false、{<br>メッセージ: '誤ったパスワード。' <br>}); <br>} <br> var userinfo = user.get(); <br> return done(null、userinfo); <br>})。 err); <br> return done(null、false、{<br> message: 'signin' <br>}); <br>}); <br>} <br>); <br>
bcrypt で。 詳細が正しければ、ユーザーは署名されます。
さあ、 routes/auth.js に移動し、/signin に投稿するルートを追加します。 '/dashboard'、
failureredirect: '/signin'
}
)) {
app.get( '/signup'、authcontroller.signup);
app.get( '/signin'、authcontroller.signin);
app.post( '/signup'、passport.authenticate( 'local-signup'、{local-signup '、{
suckredirect:'/signup '
);
app.get( '/dashboard'、isloggedin、authcontroller.dashboard); <br> app.get( '/logout'、authcontroller.logout);
post( '/signin'、purdport.authenticate( 'local-signin'、{
sucderredirect: '/board:'/board '、 '/signin'
}
));
function isloggedin(req、res、next){
if(req.isauthenticed())
return next();
res.redirect( '/signin');
}
}
サインアップ中に使用すると、http:// localhost:5000/dashboard/。 MySQLデータベースを使用して、後遺症とパスポートを使用しました。
アプリケーションをより魅力的にするために、CSSスタイリングを少し追加します。このチュートリアルのスタイリングのコードと完全なコードは、GitHubに記載されています。
結論
これは、Passportを使用するためにPassportを使用して、「Secelize and MySQL」を認証するチュートリアルを終了します。 Sequelizeは、ノードを使用するときにMySQLを扱うための非常に便利なORMです。私はそれが非常に便利であることを個人的に発見しました。次のノードMysQLアプリで使用することを絶対に検討する必要があります。
この投稿は、メアリーオコスンからの貢献により更新されました。メアリーはナイジェリアのラゴスに拠点を置くソフトウェア開発者であり、node.js、javascript、mysql、およびnosqlテクノロジーの専門知識を持っています。
以上が後遺症とMySQLを使用したパスポートを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Zustand非同期操作のデータの更新問題。 Zustand State Management Libraryを使用する場合、非同期操作を不当にするデータ更新の問題に遭遇することがよくあります。 �...
