-
2020/07/13 - Flask - Request Args, Form, Value
2020/07/13 - Flask - Request Parameter Custom Function Type
import flask app = flask.Flask(__name__) app.debug = True app.secret_key = "aa" app.session_cookie_name = "sd_account" us = {'i1':'p1', 'i2':'p2'} @app.route("/login") def rt_login(): id = flask.request.values.get('id') pw = flask.request.values.get('pw') if(id in us and pw == us[id]): flask.session['id'] = id rs = flask.Response("logincomplete", 200, {'id':id, 'pw':pw}) else: rs = flask.Response("loginfailure", 200, {'id':id, 'pw':pw}) rs.mimetype = "text/html" rs.charset = 'utf-8' return flask.make_response(rs) @app.route("/mypage") def path_mypage(): id = flask.session.get('id') if(id==None): return "req login" return "mypage: " + id app.run(host='127.0.0.1')
Client측은 Android에서 Volley를 사용한 Ex
JSONObject를 사용해 결과 값을 읽어 판단해야 하므로
flask에 전용 함수 추가.
@app.route("/login_js") def rt_login_js(): id = flask.request.values.get('id') pw = flask.request.values.get('pw') if(id in us and pw == us[id]): flask.session['id'] = id return flask.jsonify({'result':'true', 'id': id}) return flask.jsonify({'result':'false'})
Android java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Response.Listener<String> rplsn = new Response.Listener<String>() { @Override public void onResponse(String response) { ((TextView)findViewById(R.id.textview1)).setText(response.toString()); try { JSONObject jo = new JSONObject(response); ((TextView)findViewById(R.id.textview2)).setText(jo.getString("id")); } catch (JSONException e) { Toast.makeText(getApplicationContext(), "Err onResponseJson: " + e.toString(), Toast.LENGTH_LONG).show(); } } }; Response.ErrorListener errlsn = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this, "Err ErrorListener: " + error.toString(), Toast.LENGTH_SHORT).show(); } }; String url = "http://10.10.10.1:5000/login_js?id=u11&pw=p11"; StringRequest req = new StringRequest(Request.Method.GET, url, rplsn, errlsn); RequestQueue rq = Volley.newRequestQueue(MainActivity.this); rq.add(req); }
단순 예제로 cookie와 session을 적용하여 로그인 정보를 넣지 않았다. 위의 예제로는 매번 보내고 받을 때 인증 정보를 수작업으로 추가해서 식별하는 방법으로 풀어 갈 수 있다.
'Python' 카테고리의 다른 글
Flask - Request Args, Form, Value (0) 2020.07.13 Flask - 응답 전후처리 (0) 2020.07.13 Flask - Response (0) 2020.07.13 Flask - route (0) 2020.07.13 Python - 변수 존재 유무 확인 (1) 2020.07.13 Python - Flask 설치 (0) 2020.07.13 Python - 플라스크(flask), 장고(django) (0) 2020.07.13 Vsc Python 준비 (0) 2020.07.03