@blocklet/js-sdkはUserSessionServiceを提供し、異なるデバイス間でのユーザーのログインセッションの取得と管理を支援します。これは、「セキュリティ」や「デバイス」ページのような機能を構築する際に特に便利で、ユーザーはすべてのアクティブなセッションを確認し、自分のアカウントがどこで使用されているかを理解できます。
このガイドでは、ユーザーセッションを管理するための一般的なユースケースを説明します。
UserSessionServiceへのアクセス
まず、Blocklet SDKのインスタンスを取得します。UserSessionServiceはuserSessionプロパティの下で利用可能です。
SDKの初期化
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
const userSessionService = sdk.userSession;自分のログインセッションの取得
最も一般的なタスクは、現在認証されているユーザーのセッションリストを取得することです。getMyLoginSessionsメソッドを使用すると、ページネーションとフィルタリングをサポートしてこれを実行できます。
現在のユーザーのセッションを取得する
import { getBlockletSDK } from '@blocklet/js-sdk';
async function fetchMySessions() {
try {
const sdk = getBlockletSDK();
// オンラインセッションの最初のページ(10件)を取得する
const result = await sdk.userSession.getMyLoginSessions({}, {
page: 1,
pageSize: 10,
status: 'online', // オプションのフィルター: 'online' | 'expired' | 'offline'
});
console.log(`Total online sessions: ${result.paging.total}`);
result.list.forEach(session => {
console.log(`- Session on ${session.ua} last active at ${session.updatedAt}`);
});
} catch (error) {
console.error('Failed to fetch sessions:', error);
}
}
fetchMySessions();パラメータ
メソッドのシグネチャはgetMyLoginSessions({ appUrl?: string }, params: UserSessionQuery)です。2番目の引数は、以下のパラメータを持つクエリオブジェクトです。
- page
number(default:1) — 取得するページ番号。 - pageSize
number(default:10) — ページあたりのセッション数。 - status
'online' | 'expired' | 'offline'— 現在のステータスでセッションをフィルタリングします。
レスポンス
このメソッドは、UserSessionListオブジェクトに解決されるプロミスを返します。
- ****
object— セッションリストとページネーションの詳細を含むレスポンスオブジェクト。- list
UserSession[]— ユーザーセッションオブジェクトの配列。- ****
object— 単一のユーザーセッションオブジェクト。- id
string— セッションの一意の識別子。 - appName
string— セッションが作成されたアプリケーションの名前。 - appPid
string— アプリケーションのBlocklet PID。 - lastLoginIp
string— このセッションの最後に確認されたIPアドレス。 - ua
string— クライアントデバイスのUser-Agent文字列。 - updatedAt
string— 最終アクティビティのタイムスタンプ。 - status
string— セッションの現在のステータス(例:「online」)。 - userDid
string— セッションに関連付けられたユーザーのDID。
- id
- ****
- paging
object— ページネーション情報。- page
number— 現在のページ番号。 - pageSize
number— ページあたりのアイテム数。 - total
number— クエリに一致するセッションの総数。
- page
- list
特定のユーザーのセッションの取得
管理者ダッシュボードのような場合、現在ログインしているユーザー以外のユーザーのログインセッションを取得する必要があるかもしれません。getUserSessionsメソッドを使用すると、ユーザーのDIDを提供することでこれを実行できます。
特定のDIDのセッションを取得する
import { getBlockletSDK } from '@blocklet/js-sdk';
async function fetchUserSessions(userDid) {
try {
const sdk = getBlockletSDK();
const sessions = await sdk.userSession.getUserSessions({ did: userDid });
console.log(`Found ${sessions.length} sessions for user ${userDid}:`);
sessions.forEach(session => {
console.log(`- Session ID: ${session.id}, App: ${session.appName}`);
});
} catch (error) {
console.error(`Failed to fetch sessions for user ${userDid}:`, error);
}
}
// 対象ユーザーのDIDに置き換えてください
fetchUserSessions('zNK...some...user...did');パラメータ
- did
string(required) — セッションを取得する対象ユーザーのDID。 - appUrl
string— アプリケーションのベースURL。デフォルトは現在のBlockletのサービスURLです。
レスポンス
このメソッドは、UserSessionオブジェクトの配列に解決されるプロミスを返します。
- ****
UserSession[]— 指定されたユーザーのユーザーセッションオブジェクトの配列。- ****
object— 単一のユーザーセッションオブジェクト。- id
string— セッションの一意の識別子。 - appName
string— セッションが作成されたアプリケーションの名前。 - appPid
string— アプリケーションのBlocklet PID。 - ua
string— クライアントデバイスのUser-Agent文字列。 - updatedAt
string— 最終アクティビティのタイムスタンプ。 - status
string— セッションの現在のステータス。 - userDid
string— セッションに関連付けられたユーザーのDID。
- id
- ****
このガイドでは、SDKを使用してユーザーセッション情報を取得する主な方法について説明しました。利用可能なすべてのメソッドと詳細な型定義の完全なリストについては、UserSessionService APIリファレンスを参照してください。