ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Flask예제 - User Login 검사와 결과 처리
    Search: Python Python 2020. 7. 13. 20:46

     

    2020/07/13 - Flask - route

    2020/07/13 - Flask - Response

    2020/07/13 - Flask - Request Args, Form, Value

    2020/07/13 - Flask - Request Parameter Custom Function Type

    2020/07/13 - Flask - Cookie

    2020/07/13 - Flask - Session

     

    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

    댓글