私のアプリケーションにログインします。しかし、私はアプリでログインするためのCRSFトークンが必要です。まず、私はクッキーを送り、csrfを取得しようとします。しかし私は初心者であり、動作しません。実際、私は何を作るのか分からない。(Django)CSRFでAndroidアプリにログインするにはどうすればよいですか?
私のウェブサイトでこのアプリを使用しています。そして私はアンドロイドアプリのWebサイトとAPI(Django Rest Framework)にdjangoを使用しています。
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;
}
};
アンドロイドクライアントの場合は、django-rest-frameworkトークン認証を使用することをお勧めします。必要に応じて、djangoコードとokhttpコードの両方を提供できます。 – Ykh
ありがとうございました。もしあなたが私にそれらを与えることができれば、それは私のために良いでしょう。 – AlpYuktug