2

ローカル開発サーバーで App Engine の UserService を使用しようとしていますが、期待どおりに動作しません。質問への回答を求めてフォーラムを検索しましたが、特に問題に対処するものは見つかりませんでした。

最初に、次のように UserService からログイン URL を取得します。

UserService userService = UserServiceFactory.getUserService();
if(userService.isUserLoggedIn())
  String loginURL = userService.createLoginURL("/mycallbackservlet");
else
  ... do something else

ユーザーが最初にログインしていないと仮定して、(成功した) ログイン後にリダイレクトされる宛先 URL として「mycallbackservlet」を提供します。ログイン手順を開始するには、次のようにクライアント側で GWT ウィンドウを開きます。

Window.open(loginURL, "Bla", props);

loginURL は上記で作成したものです。任意のユーザーを入力できるローカル開発サーバーのシミュレートされたログイン画面が表示されます。OKをクリックするだけです。これで、コールバック サーブレットが (予想どおり) 呼び出されましたが、UserService オブジェクトを再度取得しても、ログインしているユーザーが表示されません。

UserServiceFactory.getUserService().isUserLoggedIn()

「偽」を返します。どうすればいいの?これは典型的な開発サーバーの動作ですか、それとも何か間違っていますか? Window.open() を使用せずに、別の方法で最初の URL を開く必要がありますか?

どんな提案でも大歓迎です!

4

2 に答える 2

0

HttpServletRequest にはメソッドがあり、メソッドがあります

  • getRemoteUser()
  • getUserPrincipal()
  • isUserInRole(文字列ロール)

それはあなたの状況で役立つかもしれません。

于 2012-10-02T17:21:31.947 に答える
0

ユーザーが既にログインしているときにログイン URL を作成しているようですか? 逆にすべきではありません:

if(!userService.isUserLoggedIn())
  String loginURL = userService.createLoginURL("/mycallbackservlet");
于 2012-10-02T17:16:52.870 に答える