0

お気に入りや予定など、1 人のユーザーに対してさまざまな機能を使用したいと考えています。アプリでログインデータが必要です。しかし、Tabris Framework でローカル ストレージを使用することは可能ですか?

4

3 に答える 3

0

Tabris には、デバイスに情報を保存するための ClientStore (RWT.getClient().getService( ClientStore.class) ) というクライアント サービスがあります。とにかく、これらのデータをデバイスに保存することはお勧めしません。推奨される方法は、トークンを ClientStore に保存して、次回アプリを開いたときにユーザーを識別することです。このトークンを使用すると、サーバー上のデータベースなどにデータを保存できます。ClientStore は、Web ブラウザーの Cookie と比較できます。Cookie に大量のデータを保存することはありません。

于 2013-05-21T12:02:08.993 に答える
0

私もClientStorageを使用しようとしています。現在、Tabris でいくつかのことをテストしており、ここのガイドを使用しましたhttp://eclipsesource.com/blogs/2013/02/18/tabris-0-11-0-new-noteworthy/ .

ClientStorage オブジェクトを値「false」から「true」に設定してテストしています。しかし、アプリを終了して戻るたびに、値は再び「false」に戻ります。

 private void createContent( final UIContext context ) { 
    final ClientStore storageLogin = RWT.getClient().getService( ClientStore.class );
    storageLogin.add( "username", "none" );
    storageLogin.add( "passwd", "none" );
    storageLogin.add( "isLoggedIn", "false");
    labelUsername = new Label( containerContent, SWT.NONE );
    labelUsername.setText( "Username:" );
    final Text usernameText = new Text( containerContent, SWT.BORDER );
    final Label labelPasswd = new Label( containerContent, SWT.NONE );
    labelPasswd.setText( "Password:" );
    final Text passwdText = new Text( containerContent, SWT.PASSWORD | SWT.BORDER );
    final Button buttonLogin = new Button( containerContent, SWT.PUSH );
    if(storageLogin.get( "isLoggedIn" ) == "false"){
      buttonLogin.setText( "Log in" );
    }
    else{
      buttonLogin.setText( "Logged in!" );
    }
    buttonLogin.addSelectionListener( new SelectionListener() {

      public void widgetSelected( SelectionEvent event ) {
        if(storageLogin.get( "isLoggedIn" ) == "false"){
          StringBuilder stringBuilder = new StringBuilder();
          stringBuilder.append( "Username: " + usernameText.getText() + "\n" );
          stringBuilder.append( "Password: " + passwdText.getText() + "\n" );
          System.out.println( "Stringbuilder: \n" + stringBuilder.toString() );
          storageLogin.add( "username", usernameText.getText() );
          storageLogin.add( "passwd", passwdText.getText() );
          storageLogin.add( "isLoggedIn", "true" );
          buttonLogin.setText( "Logged in!" );
        }
        else{

        }

      }

      public void widgetDefaultSelected( SelectionEvent e ) {
      }
    } );

  }

もちろん、クリアテキストでパスワードを保護するつもりはありません。実験しているだけです。:)

于 2013-06-03T19:40:17.240 に答える
0

これは、 storageLogin.add( "isLoggedIn", "false"); を実行したためだと思います。アプリにアクセスするたびに。これにより、転送された値が上書きされ、クライアントに戻されます。storageLogin.get( "isLoggedIn" ); の場合にのみ false に設定することをお勧めします。null を返します。

于 2013-06-03T19:49:10.787 に答える