const express = require('express')
const app = express()
// 用于將用戶的信息生成jwt字符串
const jwt = require('jsonwebtoken')
// 用于jwt字符串解析成用戶信息
const expressJWT = require('express-jwt')
//允許跨域
const cors = require('cors')
app.use(cors())
// 解析post表單數(shù)據(jù)的中間件
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
// 定義secret密鑰
const secretKey = 'itheima No1 jwz'
// 將jwt字符串解析還原成json對象的中間件
app.use(expressJWT.expressjwt({ secret: secretKey, algorithms: ['HS256'] }).unless({ path: [/^\/api\//] }))
// 登錄接口
app.post('/api/login', (req, res) => {
const userinfo = req.body
// 登陸失敗
if (userinfo.username !== 'admin' || userinfo.password !== '000000') {
return res.send({
status: 400,
message: '登錄失敿汤冕屯!'
})
}
// 登錄成功
const tokenStr = jwt.sign({ username: userinfo.username }, secretKey, { expiresIn: '30s' }) //三個參數(shù) 用戶的信息對象叶骨,加密的密鑰峡竣,配置對象联四,可以配置有效期
res.send({
status: 200,
message: '登陸成功',
token: "Bearer " + tokenStr,
})
})
app.get('/admin/getinfo', (req, res) => {
console.log(req.auth);
res.send({
status: 200,
message: '獲取用戶信息成功!',
// 視頻中是req.user 改成auth可以實現(xiàn)
data: req.auth,
})
})
// 聲明全局錯誤處理中間件轮傍,捕獲jwt失敗后產(chǎn)生的錯誤
app.use((err, req, res, next) => {
// 這次錯誤由于token解析失敗導致的
if (err.name === 'UnauthorizedError') {
return res.send({
status: 401,
message: '無效的token'
})
}
res.send({
status: 400,
message: '未知的錯誤秕重!'
})
})
app.listen(80, () => {
console.log('80已開啟');
})
JWT(JSON Web Tokens)用nodeJS實現(xiàn)用戶登錄以及基于token獲取用戶信息
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門瞳脓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讨阻,“玉大人,你說我怎么就攤上這事篡殷。” “怎么了埋涧?”我有些...
- 文/不壞的土叔 我叫張陵板辽,是天一觀的道長。 經(jīng)常有香客問我棘催,道長劲弦,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任醇坝,我火速辦了婚禮邑跪,結果婚禮上,老公的妹妹穿的比我還像新娘呼猪。我一直安慰自己画畅,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布宋距。 她就那樣靜靜地躺著轴踱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谚赎。 梳的紋絲不亂的頭發(fā)上淫僻,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笑撞!你這毒婦竟也來了岛啸?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布信姓,位于F島的核電站鸵隧,受9級特大地震影響,放射性物質發(fā)生泄漏意推。R本人自食惡果不足惜豆瘫,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菊值。 院中可真熱鬧外驱,春花似錦、人聲如沸腻窒。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽儿子。三九已至趟薄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間典徊,已是汗流浹背杭煎。 一陣腳步聲響...
推薦閱讀更多精彩內容
- (基礎)golang+jwt實現(xiàn)用戶登錄獲取token 1.根據(jù)用戶名/密碼獲取token ServiceJWT...
- (進階)golang+gin+jwt實現(xiàn)用戶登錄獲取token 1.獲取tokenPOST請求參數(shù){ "na...
- 接口需求:用戶登錄成功后,返回Django REST framework 的JWT Token, Token不存儲...
- 本文源碼:Gitee·點這里 前言 本篇主要講述 Spring Security 如何結合 JWT 雷恃,實現(xiàn)無狀態(tài)下...
- 客戶的數(shù)據(jù)登錄信息一般保存在 標簽中两残,我們只要監(jiān)聽其submit事件,根據(jù)服務器返回的數(shù)據(jù)做出響應并渲染給客戶就可...