[node.js]ログイン(2)-passport使用例
passport使用例
npm i passport passport-local passport-mongoose express-session
(ヒント:コンピュータが速いほど、インストール速度が速くなります.)
インストール後、必要なモジュールがロードされます.
そうでなければappjsファイルにpassport-local-mongoseモジュールをロードすればいいです.(後でMVCモードで再梱包するのがおっくうなら、モデルフォルダを作成しておきます.)
(設定部のユーザがユーザモデルを指すと仮定)
モジュールを上にロードした同じファイルでplugin設定も完了しました.
passportにはusernameという変数が必要です.
ユーザー名なしでログインを設定するには、Eメールとパスワードのみを使用します.
次の手順では、上記のオプションを追加して、ユーザー名をemailに置き換えます.
上記のすべての手順を経て、インストールを完了します.
実際の過程でreq.body.passwordなどで実現すればよい.
その結果、上図のように会員加入が成功したことがわかります.
失敗した場合は、/loginにリダイレクトします.
bcryptに比べて、設定や進行が少し難しいと感じるかもしれません.
これからは、その苦労を輝かせる時だ.🌟
ひかりじかん🌟(2)
接近をコントロールできる!
多くの場合、認証を使用できます.
ミドルウェアを作成および管理すると、より便利になる可能性があります.
middleware.jsでミドルウェアを作成した後
(まぶしい!)
1.passportのインストールと設定
-モジュールの読み込み
npm i passport passport-local passport-mongoose express-session
(ヒント:コンピュータが速いほど、インストール速度が速くなります.)
インストール後、必要なモジュールがロードされます.
const session = require("express-session")
const LocalStrategy = require("passport-local")
const passport = require("passport")
その後、モデルフォルダを個別に指定すると、モデルが作成されます.jsファイルでは、そうでなければappjsファイルにpassport-local-mongoseモジュールをロードすればいいです.(後でMVCモードで再梱包するのがおっくうなら、モデルフォルダを作成しておきます.)
const passportLocalMongoose = require("passport-local-mongoose")
-設定
(設定部のユーザがユーザモデルを指すと仮定)
モジュールを上にロードした同じファイルでplugin設定も完了しました.
UserSchema.plugin(passportLocalMongoose)
app.use(
session({
secret: "secret is secret.",
resave: false,
saveUninitialized: false,
}),
)
app.use(passport.initialize())
app.use(passport.session())
passport.use(new LocalStrategy(User.authenticate()))
これはpassportにLocalStrategyの使用を要求する部分です.passportにはusernameという変数が必要です.
ユーザー名なしでログインを設定するには、Eメールとパスワードのみを使用します.
UserSchema.plugin(passportLocalMongoose, {usernameField: "email"})
前に示したように、オプションを追加できます.次の手順では、上記のオプションを追加して、ユーザー名をemailに置き換えます.
- serialize
passport.serializeUser(User.serializeUser())
passport.deserializeUser(User.deserializeUser())
このセッションでは、ユーザーにシーケンス化された部分を設定します.上記のすべての手順を経て、インストールを完了します.
2.会員収入
const user = new User({ email : "[email protected]" })
const newUser = await User.register(user, "1234")
1234はテストパスワードです.実際の過程でreq.body.passwordなどで実現すればよい.
その結果、上図のように会員加入が成功したことがわかります.
3.ログイン
app.post("/login",
passport.authenticate("local", { failureRedirect: "/login" }), (req, res) => {
res.redirect("/home")
}
)
上記ミドルウェアによりログインを実現します.失敗した場合は、/loginにリダイレクトします.
4.ログアウト
bcryptに比べて、設定や進行が少し難しいと感じるかもしれません.
これからは、その苦労を輝かせる時だ.🌟
app.get("/logout", (req, res) => {
req.logout()
res.redirect("/login")
})
これは間違いなく世界で最も簡単なログアウトコードです.5.認証
ひかりじかん🌟(2)
app.get("/auth", (req, res) => {
if (req.isAuthenticated()) {
res.render("auth")
} else {
res.redirect("/login")
}
})
ユーザが認証を受けるか否かを簡単なコードで判断する、接近をコントロールできる!
6.認証ミドルウェアの作成
多くの場合、認証を使用できます.
ミドルウェアを作成および管理すると、より便利になる可能性があります.
middleware.jsでミドルウェアを作成した後
module.exports.isLoggedIn = (req, res, next) => {
if(!req.isAuthenticated()){
return res.redirect("/login")
}
next()
}
app.jsは対応するミドルウェアをロードします.const { isLoggedIn } = require("./middleware")
そして、前に光の認証部分を見て、ミドルウェアを使いますapp.get("/auth", isLoggedIn, (req, res) => {
res.render("auth")
})
三つ目の明かりが見える🌟(まぶしい!)
Reference
この問題について([node.js]ログイン(2)-passport使用例), 我々は、より多くの情報をここで見つけました https://velog.io/@ysg81/로그인2-passport-사용-예제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol