前提:使用者已經經過登入驗證這個環節。 問題:那麼使用者再向服務端取得自己私有的資料時,如何來驗證他的身分? (備註:後端用的express框架)
人生最曼妙的风景,竟是内心的淡定与从容!
使用session 或 json web token
雷雷
session,把用戶id寫入session驗證成功時req.session.user = user;
req.session.user = user;
session!session可以存在伺服器記憶體或redis這樣的快取裡。 有成熟的第三方session庫,其中session可以存在redis/資料庫/本地。 你可以這樣,將session存到redis中:
var session = require('express-session'); var RedisStore = require('connect-redis')(session); app.use(session({ store: new RedisStore({ host: CONF.REDIS_URL(), port: 6379 }), secret: 'keyboard cat', resave: false, saveUninitialized: false, cookie: {maxAge: 14400000} }));
用sessionID做一個token,每次要求都檢查這個token
和後台協商,調介面的時候,然後後台去驗證,他的身分
使用者驗證通過之後會在後台保存一定的資訊來避免後期重複驗證,以前常用的方法是Session,Session 是基於Cookie 的,後來逐漸發展了Token 方式,使用Token 來代替Cookie 中的Seesion-Id,作為後端判斷登入使用者的依據,再然後出現了JWT(JSON Web Token)。
不過話說回來,如果確實存在非常重要需要特別謹慎的操作,應該會有二次驗證,比如付款的隨機短信密碼,以及各種安全 Token (或隨機密碼) App 等。最簡單的就是在登入一定時間之後要求再次輸入密碼確認進行高安全性操作,例如管理員刪除重要資料之類的操作。
使用session 或 json web token
雷雷
session,把用戶id寫入session
驗證成功時
req.session.user = user;
session!
session可以存在伺服器記憶體或redis這樣的快取裡。
有成熟的第三方session庫,其中session可以存在redis/資料庫/本地。
你可以這樣,將session存到redis中:
用sessionID做一個token,每次要求都檢查這個token
和後台協商,調介面的時候,然後後台去驗證,他的身分
使用者驗證通過之後會在後台保存一定的資訊來避免後期重複驗證,以前常用的方法是Session,Session 是基於Cookie 的,後來逐漸發展了Token 方式,使用Token 來代替Cookie 中的Seesion-Id,作為後端判斷登入使用者的依據,再然後出現了JWT(JSON Web Token)。
不過話說回來,如果確實存在非常重要需要特別謹慎的操作,應該會有二次驗證,比如付款的隨機短信密碼,以及各種安全 Token (或隨機密碼) App 等。最簡單的就是在登入一定時間之後要求再次輸入密碼確認進行高安全性操作,例如管理員刪除重要資料之類的操作。