ホームページ > ウェブフロントエンド > jsチュートリアル > 後遺症とMySQLを使用したパスポートを使用します

後遺症とMySQLを使用したパスポートを使用します

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-03-11 11:04:09
オリジナル
755 人が閲覧しました

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、
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

馴染みのある「サイトがライブである必要があります。ニース! データベース 順調に見えます "メッセージ。これは、私たちの続編モデルが正常に同期されていることを意味します。データベースをチェックすると、指定された列のユーザーテーブルが表示されます。 up。

最初のことは、authcontroller ファイルをインポートしてサインアップルートを定義することです。 authcontroller.signup);
};

次に、このルートを server.js にインポートし、 server.js を渡します。 require( './ app/rootes/auth.js')(app);

これを実行:

 node server.js <br> 
ログイン後にコピー

:5000/signupにアクセスしてください。 src = "https://img.php.cn/upload/article/000/000/000/174166225185648.png">

サインインフォームの手順を繰り返しましょう。前と同様に、ビューフォルダーに signin.hbs という名前のファイルを作成し、次のHTMLコードを貼り付けます:

&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> 
ログイン後にコピー

app/controllers/authcontroller.js

 exports.signin = function(req、res){<br> res.render( 'signin'); <br>}; <br> 
ログイン後にコピー

thenこれ:

bcryptjs 、これはパスワードを保護する必要があります。

module.exports このようにブロック>このようにブロックします。 this:

 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート