Sequelizeは、約束ベースのnode.js ormです。 PostgreSQL、MySQL、MariadB、SQLite、およびMSSQLで使用できます。このチュートリアルでは、Webアプリのユーザー向けに認証を実装します。また、NodeとMySQLと一緒にノード用の一般的な認証ミドルウェアであるPassportを使用して、ユーザー登録とログインを実装します。エクスプレスフレームワークなので、必要なもののインストールを開始します。
アプリのディレクトリを作成します。このディレクトリ内で、ターミナルまたはコマンドプロンプトからこれを実行します。これにより、すぐに実行される一連のプロンプトが表示されます。
このチュートリアルの主要な依存関係は次のとおりです。ビュー
端末またはコマンドプロンプトからインストールするには、次のように次のように実行します。 -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
//パスポート戦略 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 サイトの他の関連記事を参照してください。