メインコンテンツへスキップ

ユーザーセッションの管理

@blocklet/js-sdkはUserSessionServiceを提供し、異なるデバイス間でのユーザーのログインセッションの取得と管理を支援します。これは、「セキュリティ」や「デバイス」ページのような機能を構築する際に特に便利で、ユーザーはすべてのアクティブなセッションを確認し、自分のアカウン

@blocklet/js-sdkはUserSessionServiceを提供し、異なるデバイス間でのユーザーのログインセッションの取得と管理を支援します。これは、「セキュリティ」や「デバイス」ページのような機能を構築する際に特に便利で、ユーザーはすべてのアクティブなセッションを確認し、自分のアカウントがどこで使用されているかを理解できます。

このガイドでは、ユーザーセッションを管理するための一般的なユースケースを説明します。

UserSessionServiceへのアクセス

まず、Blocklet SDKのインスタンスを取得します。UserSessionServiceはuserSessionプロパティの下で利用可能です。

SDKの初期化

javascript
import { getBlockletSDK } from '@blocklet/js-sdk';

const sdk = getBlockletSDK();
const userSessionService = sdk.userSession;

自分のログインセッションの取得

最も一般的なタスクは、現在認証されているユーザーのセッションリストを取得することです。getMyLoginSessionsメソッドを使用すると、ページネーションとフィルタリングをサポートしてこれを実行できます。

現在のユーザーのセッションを取得する

javascript
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。
    • paging object — ページネーション情報。
      • page number — 現在のページ番号。
      • pageSize number — ページあたりのアイテム数。
      • total number — クエリに一致するセッションの総数。

特定のユーザーのセッションの取得

管理者ダッシュボードのような場合、現在ログインしているユーザー以外のユーザーのログインセッションを取得する必要があるかもしれません。getUserSessionsメソッドを使用すると、ユーザーのDIDを提供することでこれを実行できます。

特定のDIDのセッションを取得する

javascript
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。

このガイドでは、SDKを使用してユーザーセッション情報を取得する主な方法について説明しました。利用可能なすべてのメソッドと詳細な型定義の完全なリストについては、UserSessionService APIリファレンスを参照してください。