iOSでLiferayセッションにアクセスする

iOSでLiferayセッションにアクセスする

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

セッションは、クライアントとサーバー間の会話状態です。 通常、2つの間の複数の要求と応答で構成されます。 この通信を容易にするには、セッションにサーバーIPアドレスとユーザーのログイン資格情報が必要です。 Liferay Screensは、Liferayセッションを使用して、Liferay Portalが提供するJSON Webサービスにアクセスしてクエリを実行します。 Liferayセッションを使用してログインすると、ポータルはユーザーの情報(名前、電子メール、ユーザーIDなど)を返します。 Screensは、この情報とアクティブなLiferayセッションをScreensの SessionContext クラスに保存します。

SessionContext クラスは非常に強力であり、さまざまなシナリオで画面を使用できます。 たとえば、 SessionContext を使用して、Liferayが提供するJSON WS APIまたはLiferay Mobile SDKで情報を要求できます。 SessionContext を使用して匿名セッションを作成したり、ログインスクリーンレットを表示せずにユーザーをログインしたりすることもできます。

このチュートリアルでは、一般的な SessionContext 使用例と、クラスの最も重要なメソッドについて説明します。

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

ユーザーがログインスクリーンレットで正常にログインすると、現在のセッションが確立されます。 セッションを取得するには、 SessionContext.currentContext を使用します。 ユーザーがログインスクリーンレットでサインインしなかった場合、これは nil を返し。 <code>SessionContext プロパティ isLoggedIn を使用して、セッションが存在するかどうかを判断することもできます。 現在のセッションがない場合、 false 返します。

Liferayセッションの作成

Liferay Screensを使用する場合、Liferay Mobile SDKによって提供されるリモートJSON Webサービスを呼び出すことができます。 Liferay Mobile SDKを使用するすべての操作には、サーバーアドレス、ユーザー資格情報、およびその他の必要なパラメーターを提供するLiferayセッションが必要です。 ログインスクリーンレットは、ユーザーが正常にログインするとセッションを作成します。 このセッションは、 SessionContext メソッド createRequestSession()取得できます。 通常、このメソッドは currentContext オブジェクトを介して呼び出します。 たとえば、

SessionContext.currentContext?.createRequestSession()

その後、セッションを使用してMobile SDKサービス呼び出しを行うことができます。 ユーザーがログインしているかどうかを最初に確認する必要がある場合は、 SessionContext プロパティ isLoggedIn使用できます。

すばらしいです\! これで、アプリで既存のセッションを取得する方法がわかりました。しかし、ログインスクリーンレットを使用していない場合はどうでしょうか。 取得する既存のセッションはありません。 汗かいていない\! SessionContext を使用して手動で作成できます。 次のセクションでは、これを行う方法を示します。

セッションを手動で作成する

Login Screenletを使用しない場合、 SessionContext は取得するセッションがありません。 この場合、手動で作成する必要があります。 SessionContext method loginWithBasicこれを行うことができます。 このメソッドは、ユーザー名、パスワード、およびユーザー属性をパラメーターとして受け取り、それらの資格情報でセッションを作成します。 次のコードは、 loginWithBasic を使用してセッションを作成します。

Session session = SessionContext.loginWithBasic(username: USERNAME, password: PASSWORD, userAttributes: [:]);

userAttributes パラメーターの場合、 userIdなど、ログインしているユーザーに関連付けられたいくつかの属性を指定する必要があります。 属性の完全なリストについては、 ユーザーモデルインターフェイス参照してください。

スーパー\! これで、セッションを手動で作成する方法がわかりました。 次のセクションでは、自動ログインを実装し、セッションを保存または復元する方法を示します。

自動ログインの実装とセッションの保存または復元

ログインスクリーンレットは素晴らしいですが、ユーザーがアプリを開くたびに資格情報を入力する必要はありません。アプリで必要なログインは1回だけです。 あなたのアプリでこれを実現するために、参照 この動画

つまり、Login Screenletで saveCredentials から true を設定する必要があります。 次のログインでは、保存された資格情報が使用されます。 アプリの再起動時にこれが機能することを確認するには、 SessionContext メソッド loadStoredCredentialsを使用して、保存された資格情報を取得する必要があります。 次のSwiftコードは、これの典型的な実装を示しています。

if SessionContext.loadStoredCredentials() {
    // user auto-logged in
    // consider doing a relogin here (see next section)
}
else {
    // send user to login screen with the login screenlet
}

驚くばかり\! これで、Liferay Screensアプリに自動ログインを実装する方法がわかりました。 利用可能な SessionContext メソッドの詳細については、このチュートリアルの最後にある メソッドセクション を参照してください。 次に、ユーザーがログインしている間にサーバー上でユーザーの資格情報が変更された場合に、再ログインを実装する方法を学習します。

再ログインの実装

セッションは、ログインスクリーンレットまたは自動ログインのどちらで作成された場合でも、Liferayインスタンスのユーザーを確認する基本的なユーザーデータを含みます。 サーバーでデータが変更されると、セッションが古くなり、アプリの動作が不安定になる可能性があります。 また、ユーザーがサーバーで削除、無効化、またはその他の方法で資格情報を変更した場合、自動ログイン機能はサーバートランザクションを実行しないためアクセスを拒否しません。ローカルストレージから既存のセッションを取得するだけです。 これは最適な状況ではありません\!

このようなシナリオでは、再ログイン機能を使用できます。 この機能は、現在のセッションがまだ有効かどうかを判断するメソッドに実装されます。 セッションがまだ有効な場合、ユーザーのデータはサーバーからの最新のデータで更新されます。 セッションが有効でない場合、ユーザーはログアウトされ、再度ログインして新しいセッションを作成する必要があります。

この機能に対して、 SessionContext.currentContext メソッド relogin呼び出します。

SessionContext.currentContext?.relogin(closure)

この操作はバックグラウンドスレッドで非同期に実行されることに注意してください。 クロージャ 引数は、最終的に新しいユーザー属性を受け取る関数です。 エラーの場合、クロージャは nil 属性で呼び出され、ユーザーはセッションからログアウトされます。 完全な再ログインの典型的なSwiftコードは次のとおりです。 末尾のクロージャーが使用されていることに注意してください。

SessionContext.currentContext?.relogin { userAttributes in
    if userAttributes == nil {
        // couldn't retrieve the user attributes: user invalidated or password changed?
    }
    else {
        // full re-login made. Everything is updated
    }
}

すばらしいです\! これで、アプリに再ログインを実装する方法がわかりました。また、 SessionContext がどれほど便利かを見てきました。 さらに多くのことができます\! 次のセクションでは、追加の SessionContext メソッドと、このチュートリアルで使用されるメソッドの詳細をリストします。

方法

デフォルトのサーバーと提供されたOAuth 2トークンを使用してLiferayセッションを作成します。 これは、Liferay ScreensOAuth 2とともに使用することを目的としています。

物性

物件タイプ説明
currentContextSessionContextログインスクリーンレット、または loginWithBasic または loginWithOAuth2 メソッドによって確立された現在のセッション。
isLoggedInBoolSessionContext にLiferayセッションが含まれる場合、 true 返します。
basicAuthUsernameString現在のセッションを確立するために使用されるユーザー名(存在する場合)。
basicAuthPasswordString現在のセッションを確立するために使用されるパスワード(ある場合)。
userId数値現在のセッションを確立するために使用されるユーザー識別子(存在する場合)。

詳細については、GitHubの SessionContext ソースコードを参照してください。

関連トピック

iOSのログインスクリーンレット

iOSアプリでのスクリーンレットの使用

iOS用Liferay画面でのOAuth 2の使用

« リストスクリーンレットで複雑なリストを作成するiOSスクリーンレットへのカスタムインタラクターの追加 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています