【问题标题】:Tabris Local StorageTabris 本地存储
【发布时间】:2013-05-08 13:34:30
【问题描述】:

我想为一位用户使用不同的功能,例如收藏夹和约会。我需要应用程序中的登录数据。但是是否可以在 Tabris 框架中使用本地存储?

【问题讨论】:

    标签: local-storage tabris


    【解决方案1】:

    Tabris 有一个名为 ClientStore (RWT.getClient().getService( ClientStore.class) ) 的客户端服务,用于在设备上保存信息。无论如何,不​​建议将这些数据保存在设备上。推荐的方法是在 ClientStore 中存储一个令牌,以便在用户下次打开应用程序时识别用户。使用此令牌,您可以存储数据,例如在服务器上的数据库中。 ClientStore 可以与 Web 浏览器的 cookie 进行比较。您永远不会在 cookie 中保存太多数据。

    【讨论】:

      【解决方案2】:

      我也即将使用 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 ) {
            }
          } );
      
        }
      

      当然,我不会以明文形式保护任何密码,只是尝试一下。 :)

      【讨论】:

        【解决方案3】:

        我会说这是因为您执行 storageLogin.add("isLoggedIn", "false");每次访问该应用程序。这将覆盖传输的值并将其存储回客户端。如果 storageLogin.get("isLoggedIn"); 我建议仅将其设置为 false返回 null。

        【讨论】:

          猜你喜欢
          • 2017-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-26
          • 2016-03-07
          • 2016-02-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多