JWTのログイン認証トークンの使用NodeJs実現

長所トークン認証ログイン:ステートレス、クロスドメインは、あなたがCSRF、良好なパフォーマンス(ない適切なサーバークエリセッションのすべての要求)、ローカルのみのトークンを堆積させるために必要なクライアント、サーバー・ヘッダにアクセスするたびに防ぐことができますプラストークン缶

実装:
インストールJWTnpm install jsonwebtoken --save

インポートパッケージ:const jwt=require('jsonwebtoken')

基本的な使用:

const jwt=require('jsonwebtoken')
let token = jwt.sign({user: '1234'}, 'Fizz', {expiresIn: 60 * 60})
console.log(token)
   
   
jwt.verify(token, 'Fizz', function (err, data) {
if (err) console.log(err)
else console.log('解析的数据', data)
})

実用的なアプリケーション:

トークンの作成と検証をパッケージ化します。

const jwt=require('jsonwebtoken')
const screat='frdyhdrustgsdt'

function createToken(payload){
	//产生token
	payload.ctime=Date.now()  //创建时间
	//可加其他字段
	return jwt.sign(payload,screat,{expiresIn: 60})   //设置过期时间60s
}

//验证token
function checkToken(token){
	return new Promise((resolve,reject)=>{
		jwt.verify(token,screat,(err,data)=>{
			console.log(data)
			if(err)  reject('token 验证失败')
			else   resolve(data)
			
		})
	})
}
 
module.exports={
	createToken,checkToken
}

JWTクライアントがクッキーに保存することができ、サーバーが返すが、またのlocalStorageに保存することができ受けます。

ユーザーログインが成功したリターン・トークンです。

 let token=jwt.createToken({id:data.id,name:data.name})
 res.status(200).send({success:"true",token:token, msg: "登录成功"})

ことを注意:
ペイロードは実際のデータ転送を格納するために使用される、JSONオブジェクトの一部であるが必要です。JWTは7つの公式の場を提供:デフォルトは暗号化されていない、誰でも読むことができ、このセクションでは、機密情報を入れないでください。またBase64URLアルゴリズムを使用して文字列に変換
公式をチェックアウトすることができますhttps://www.npmjs.com/package/jsonwebtoken#token-expiration-exp-claim

ログインに成功すると、クライアントの他の操作は、リクエストトークン、サーバー側の検証に運ぶために:

//检查token
app.use((req,res)=>{
		let token=req.headers.authorization
	jwt.checkToken(token)  
	  .then((data)=>{
	  	console.log(data)
	  next()
	  })
	  .catch((err)=>{
	  	res.send({err:-1,msg:"'token非法"})
	  })
})
公開された41元の記事 ウォンの賞賛3 ビュー4570

おすすめ

転載: blog.csdn.net/fesfsefgs/article/details/104281914