セッションの検索
CoddyのNode.jsジャーニー「認証とセキュリティ」セクションの一部。レッスン 9/24。
セッション ID は保存されたセッションを指し、そのセッションはアカウントを指します。キー自体はユーザー名ではありません。リクエストを送った人を判断する前に、両方のリンクをたどってください。
// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);どちらかの検索で見つからなかった場合は、ユーザーを返さないでください。実際のセッション ID は、他の人が推測できないように長いランダムな値です。ここで使っている短いキーは、関係を確認しやすくするためのものです。次のプロジェクトでは、配列の代わりに MongoDB のコレクションと findOne を使って、この2つの検索を行います。
チャレンジ
簡単exercise.jsで、用意されているsessions配列とusers配列を使います。sidに対応するセッションを見つけ、次にそのuserIdとidが一致するユーザーを見つけます。ユーザー名をuserとして返し、どちらかの検索に失敗した場合はnullを返します。
GET /result?sid=key-aを試してみましょう。結果は{"user":"ada"}です。?sid=adaのようなユーザー名を指定しても何の証明にもならず、nullが返されます。?sid=orphanも、対応するアカウントがないためnullを返します。
自分で試してみよう
const sessions = [
{ id: 'key-a', userId: 10 },
{ id: 'key-b', userId: 20 },
{ id: 'orphan', userId: 99 },
];
const users = [
{ id: 10, username: 'ada' },
{ id: 20, username: 'bo' },
];
export function exercise({ sid }) {
return { user: sid };
}
認証とセキュリティのすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド