как я должен использовать JWT в android? - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу использовать jjwt для создания активности входа в систему. так что я не знаю, как его использовать. Я прочитал это в https://github.com/jwtk/jjwt, но я не мог понять, потому что мой Engli sh не владеет свободно. Я хочу, чтобы вы дали мне пример, чтобы понять это. Должен ли я отправить что-нибудь на обслуживание? или просто я должен сохранить ключ в моем DatabaseHelper с sqlite openhelper. я использую OkHttp для отправки имени пользователя и пароля на сервис и получаю его с помощью json. это моя деятельность:

MainActivity:

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");
        }
    }
}

1 Ответ

0 голосов
/ 10 апреля 2020

Обычно вы отправляете свои данные для входа (имя пользователя, пароль) на сервер, который аутентифицирует вас, и этот сервер отправляет обратно JWT. Вы можете сохранить этот токен в своем приложении. И затем вы отправляете этот токен в каждом запросе к серверу для аутентификации вас.

...