我应该如何在 android 中使用 JWT?

how should i use JWT in android?

我想使用 jjwt 创建一个登录 activity。 所以我不知道如何使用它。我在 https://github.com/jwtk/jjwt 读过它,但我听不懂,因为我的英语不流利。我希望你给我一个例子来理解它。我应该送什么东西去维修吗?或者我应该用 sqlite openhelper 将密钥保存在我的 DatabaseHelper 中。 我使用 OkHttp 将用户名和密码发送到服务并使用 json 获取它。 这是我的 activity :

主要活动:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    public void btnSignin_Clicked(View view){
        String username=((EditText)findViewById(R.id.txtUsername)).getText().toString();
        String password=((EditText)findViewById(R.id.txtPassword)).getText().toString();
        new SigninTask().execute(username,password);
    }
    public void btnSignup_Clicked(View view){
        ((EditText)findViewById(R.id.txtUsername)).setText("");
        ((EditText)findViewById(R.id.txtPassword)).setText("");
        String username=((EditText)findViewById(R.id.txtUsername)).getText().toString();
        String password=((EditText)findViewById(R.id.txtPassword)).getText().toString();
        new SignupTask().execute(username,password);
    }

    private class SignupTask extends AsyncTask<String,Object,String>{
        @Override
        protected String doInBackground(String... strings) {

            try {
                return
                new OkHttpClient()
                        .newCall(
                                new Request.Builder()
                                .url("http://localhost:8080/Service/signup?username="+strings[0]+"&password="+strings[1])
                                .build()
                        )
                        .execute()
                        .body()
                        .string();
            }catch (Exception e){
                return null;
            }

        }

        @Override
        protected void onPostExecute(String s) {
            SimpleDialog dialog=new SimpleDialog();
            dialog.setContext(MainActivity.this);
            dialog.setTitle("Error");
          try {
              JSONObject jsonObject=new JSONObject(s);
              Boolean result=jsonObject.getBoolean("value");
              if (result){
                  String username= ((EditText)findViewById(R.id.txtUsername)).getText().toString();
                  dialog.setMessage("Signup completed)");
                  ((EditText)findViewById(R.id.txtUsername)).setText("");
                  ((EditText)findViewById(R.id.txtPassword)).setText("");

              }else {
                  ((EditText)findViewById(R.id.txtUsername)).setText("");
                  ((EditText)findViewById(R.id.txtPassword)).setText("");
                  dialog.setMessage("Sign up failed !");
              }
          }catch (Exception e){
              dialog.setMessage("Error occured !");
          }
          dialog.show(getSupportFragmentManager(),"dialog");
        }
    }

    private class SigninTask extends AsyncTask<String,Object,String>{
        @Override
        protected String doInBackground(String... strings) {
            try {
              return   new OkHttpClient()
                        .newCall(
                                new Request.Builder()
                                        .url("http://localhost:8080/Service/authorize?username="+strings[0]+"&password="+strings[1])
                                        .build()
                        )
                        .execute()
                        .body()
                        .string();
            }catch (Exception e){
                return null;
            }
        }

        @Override
        protected void onPostExecute(String s) {
            SimpleDialog dialog=new SimpleDialog();
            dialog.setContext(MainActivity.this);
            dialog.setTitle("Error");
            try {
                JSONObject jsonObject=new JSONObject(s);
                Boolean result=jsonObject.getBoolean("value");
                if (result){
                    String username=((EditText)findViewById(R.id.txtUsername)).getText().toString();
                    String password=((EditText)findViewById(R.id.txtPassword)).getText().toString();
                    Intent intent=new Intent(MainActivity.this,CategoryActivity.class);
                    User user=new User();
                    user.setUsername(username);
                    user.setPassword(password);

                    intent.putExtra("user",user);
                    startActivity(intent);
                    finish();
                }else {
                    dialog.setMessage("Invalid username or password !");
                }
            }catch (Exception e){
                dialog.setMessage("Error occured !");
            }
            dialog.show(getSupportFragmentManager(),"dialog");
        }
    }
}

通常您将登录数据(用户名、密码)发送到对您进行身份验证的服务器,然后该服务器发回一个 JWT。您可以将此令牌存储在您的应用程序中。然后在每个请求中将此令牌发送到服务器以对您进行身份验证。