[Boiler Plate](5)ログイン&Token&Cookie
今会員加入が完了しましたので、登録を始めましょう!🌷
1. Login router
1. Login router
優先インデックス.jsにルータを作成します.app.post('/api/user/login',(req,res)=>{})
2.電子メールの検索
クライアントが要求する電子メールがデータベース内の電子メールであるかどうかを確認する必要があります.
mongodyで提供される関数findOne()を使用します.
Eメールにはすべてのユーザーが必要なため、データベースには1つのオブジェクトしか表示されません.User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
})
3.パスワードの検索
必要なEメールがある場合は、パスワードを確認する必要があります.
comparePasswordというメソッドを作成します.
passwordを渡し、isMatchでパスワードが一致しているかどうかを確認します.User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch)
return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
})
})
Passwordの比較方法はUserです.jsで作られています.
データベースに格納されているパスワードは暗号化されており、復号する必要があります.
bcryptが提供する比較関数.
クライアントが受信したパスワードとユーザーの暗号化パスワードを比較します.
結果はisMatchによってcallback関数に渡される.userSchema.methods.comparePassword = function (plainPassword, callback) {
bcrypt.compare(plainPassword,this.password,function(err,isMatch){
if(err) return callback(err)
callback(null,isMatch)
})
}
4.Tokenの作成
パスワードが一致すると、ユーザーのtokenが生成されます.
今回もcomparePasswordのようにcreateTokenメソッドを作成します. user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
})
まずjsonwebtokenライブラリをダウンロードしてトークンを作成します.npm install jsonwebtoken --save
インストール後のユーザー.jsファイルにcreateTokenメソッドを追加します.
トークンはuserのidとsecretTokenによって作成されます.
すなわち、user.id+“secretToken”=token.
「secretToken」を追加するときuser.idがわかります.const jwt = require('jsonwebtoken')
userSchema.methods.createToken=function (callback){
let user = this
//jsonwebtoken을 이용해서 토큰생성
let token = jwt.sign(user._id.toHexString(), "secretToken")
user.token=token
user.save(function(err,user){
if(err) return callback(err)
callback(null,user)
})
}
作成したトークンをuserトークンに入力し、データベースに保存します.次にuserの情報をcallback関数に渡します.
5.生成したトークンをクッキーに保存する🍪
トークンが作成され、クッキーに格納されます.クッキーはユーザー認証中に使用されます!
cookie-解析器をインストールします.npm install cookie-parser --save
const cookieParser = require('cookie-parser')
app.use(cookieParser())
index.jsファイルにトークンを作成し、クッキーに保存します.user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
Mongo DB確認
/loginルーティング完全コード app.post('/api/user/login',(req,res)=>{
// 요청한 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 있다면 비밀번호가 맞는지 확인
// 메서드는 user 모델에서 만든다.
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch) return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
// 비밀 번호가 맞으면 토큰을 생성
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
})
})
Reference
この問題について([Boiler Plate](5)ログイン&Token&Cookie), 我々は、より多くの情報をここで見つけました
https://velog.io/@mlsh1112/Boiler-Plate-5-로그인
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
app.post('/api/user/login',(req,res)=>{})
クライアントが要求する電子メールがデータベース内の電子メールであるかどうかを確認する必要があります.
mongodyで提供される関数findOne()を使用します.
Eメールにはすべてのユーザーが必要なため、データベースには1つのオブジェクトしか表示されません.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
})
3.パスワードの検索
必要なEメールがある場合は、パスワードを確認する必要があります.
comparePasswordというメソッドを作成します.
passwordを渡し、isMatchでパスワードが一致しているかどうかを確認します.User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch)
return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
})
})
Passwordの比較方法はUserです.jsで作られています.
データベースに格納されているパスワードは暗号化されており、復号する必要があります.
bcryptが提供する比較関数.
クライアントが受信したパスワードとユーザーの暗号化パスワードを比較します.
結果はisMatchによってcallback関数に渡される.userSchema.methods.comparePassword = function (plainPassword, callback) {
bcrypt.compare(plainPassword,this.password,function(err,isMatch){
if(err) return callback(err)
callback(null,isMatch)
})
}
4.Tokenの作成
パスワードが一致すると、ユーザーのtokenが生成されます.
今回もcomparePasswordのようにcreateTokenメソッドを作成します. user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
})
まずjsonwebtokenライブラリをダウンロードしてトークンを作成します.npm install jsonwebtoken --save
インストール後のユーザー.jsファイルにcreateTokenメソッドを追加します.
トークンはuserのidとsecretTokenによって作成されます.
すなわち、user.id+“secretToken”=token.
「secretToken」を追加するときuser.idがわかります.const jwt = require('jsonwebtoken')
userSchema.methods.createToken=function (callback){
let user = this
//jsonwebtoken을 이용해서 토큰생성
let token = jwt.sign(user._id.toHexString(), "secretToken")
user.token=token
user.save(function(err,user){
if(err) return callback(err)
callback(null,user)
})
}
作成したトークンをuserトークンに入力し、データベースに保存します.次にuserの情報をcallback関数に渡します.
5.生成したトークンをクッキーに保存する🍪
トークンが作成され、クッキーに格納されます.クッキーはユーザー認証中に使用されます!
cookie-解析器をインストールします.npm install cookie-parser --save
const cookieParser = require('cookie-parser')
app.use(cookieParser())
index.jsファイルにトークンを作成し、クッキーに保存します.user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
Mongo DB確認
/loginルーティング完全コード app.post('/api/user/login',(req,res)=>{
// 요청한 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 있다면 비밀번호가 맞는지 확인
// 메서드는 user 모델에서 만든다.
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch) return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
// 비밀 번호가 맞으면 토큰을 생성
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
})
})
Reference
この問題について([Boiler Plate](5)ログイン&Token&Cookie), 我々は、より多くの情報をここで見つけました
https://velog.io/@mlsh1112/Boiler-Plate-5-로그인
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch)
return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
})
})
userSchema.methods.comparePassword = function (plainPassword, callback) {
bcrypt.compare(plainPassword,this.password,function(err,isMatch){
if(err) return callback(err)
callback(null,isMatch)
})
}
パスワードが一致すると、ユーザーのtokenが生成されます.
今回もcomparePasswordのようにcreateTokenメソッドを作成します.
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
})
まずjsonwebtokenライブラリをダウンロードしてトークンを作成します.npm install jsonwebtoken --save
インストール後のユーザー.jsファイルにcreateTokenメソッドを追加します.トークンはuserのidとsecretTokenによって作成されます.
すなわち、user.id+“secretToken”=token.
「secretToken」を追加するときuser.idがわかります.
const jwt = require('jsonwebtoken')
userSchema.methods.createToken=function (callback){
let user = this
//jsonwebtoken을 이용해서 토큰생성
let token = jwt.sign(user._id.toHexString(), "secretToken")
user.token=token
user.save(function(err,user){
if(err) return callback(err)
callback(null,user)
})
}
作成したトークンをuserトークンに入力し、データベースに保存します.次にuserの情報をcallback関数に渡します.5.生成したトークンをクッキーに保存する🍪
トークンが作成され、クッキーに格納されます.クッキーはユーザー認証中に使用されます!
cookie-解析器をインストールします.npm install cookie-parser --save
const cookieParser = require('cookie-parser')
app.use(cookieParser())
index.jsファイルにトークンを作成し、クッキーに保存します.user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
Mongo DB確認
/loginルーティング完全コード app.post('/api/user/login',(req,res)=>{
// 요청한 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 있다면 비밀번호가 맞는지 확인
// 메서드는 user 모델에서 만든다.
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch) return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
// 비밀 번호가 맞으면 토큰을 생성
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
})
})
Reference
この問題について([Boiler Plate](5)ログイン&Token&Cookie), 我々は、より多くの情報をここで見つけました
https://velog.io/@mlsh1112/Boiler-Plate-5-로그인
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
npm install cookie-parser --save
const cookieParser = require('cookie-parser')
app.use(cookieParser())
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
/loginルーティング完全コード app.post('/api/user/login',(req,res)=>{
// 요청한 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 있다면 비밀번호가 맞는지 확인
// 메서드는 user 모델에서 만든다.
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch) return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
// 비밀 번호가 맞으면 토큰을 생성
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
})
})
Reference
この問題について([Boiler Plate](5)ログイン&Token&Cookie), 我々は、より多くの情報をここで見つけました
https://velog.io/@mlsh1112/Boiler-Plate-5-로그인
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
app.post('/api/user/login',(req,res)=>{
// 요청한 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
// user not found!
if(!user){
return res.json({
loginSuccess : false,
message : "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 있다면 비밀번호가 맞는지 확인
// 메서드는 user 모델에서 만든다.
user.comparePassword(req.body.password , (err,isMatch)=>{
if(!isMatch) return res.json({loginSuccess: false, message:"비밀번호가 틀렸습니다."})
// 비밀 번호가 맞으면 토큰을 생성
user.createToken((err,user)=>{
if(err) return res.status(400).send(err)
// 토큰을 저장한다. 쿠키나 로컬 스토리지에 저장할 수 있다.
res.cookie('x_auth',user.token)
.status(200)
.json({loginSuccess:true, userId:user._id})
})
})
})
})
Reference
この問題について([Boiler Plate](5)ログイン&Token&Cookie), 我々は、より多くの情報をここで見つけました https://velog.io/@mlsh1112/Boiler-Plate-5-로그인テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol