我登錄我的應用程序。但是,我需要在應用程序中登錄CRSF令牌。首先,我嘗試發送一個cookie並獲得一個csrf。但我是初學者,它不起作用。其實,我不知道我做了什麼。如何使用(Django)CSRF登錄Android應用程序?
我使用這個應用程序跨我的網站。我使用Django的網站和API(Django Rest Framework)爲Android應用程序。
private static final String KEY_LOGIN = "http://192.168.1.102:8080/api-auth/login/";
private static final String KEY_CSRF = "csrf";
public static final String KEY_EMAIL = "email";
public static final String KEY_PASSWORD = "password";
CookieManager cookieManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
editTextEmail = (EditText) findViewById(R.id.editTextEmail);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);
}
private void loginUser()
{
final HttpCookie cookie = new HttpCookie("lang", "tr");
try {
cookieManager.getCookieStore().add(new URI("http://192.168.1.102:8080/api-auth/login/"), cookie);
} catch (URISyntaxException e) {
e.printStackTrace();
}
final String email = editTextEmail.getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST,KEY_LOGIN,new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
if(response.contains("is_admin")) {
openProfileCompany();}
else
{
openProfileUser();
}}},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
Toast.makeText(Home.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
public String csrf;
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String,String>();
params.put(KEY_EMAIL,email);
params.put(KEY_PASSWORD,password);
params.put(KEY_CSRF,csrf);
return params;
}
};
對於android客戶端,我建議使用django-rest-framework令牌認證,如果你願意,我可以給你django代碼和okhttp代碼。 – Ykh
謝謝你的有趣。如果你能把它們給我,那對我來說很好。 – AlpYuktug