2016-05-26 15 views
0

おはよう。私はPythonでFlaskを使い始めています。すべてうまくいっていますが、セッションに問題があります。アイデアは、彼がログインした後、ユーザのbase64のアバターを彼のセッションに保存することです。その後、彼のアバターへのアクセスは<img src="data:image/png;base64,{{session.user.photo}}" />のレイアウトになります。Flaskのbase64イメージをユーザーセッションに保存する方法

問題は、ログインしてbase64をセッションに入れて/homeにリダイレクトするときに発生します。内部/homeのルート内に、私は簡単なアクセス制御を持っています。にセッションがユーザ鍵を持っていない場合は、再度ログインするようにリダイレクト。問題は、セッションを設定してホームにリダイレクトした後、セッションが/ homeで空であり、テンプレートをレンダリングしていないことです。

@root.route('/login', methods=['GET', 'POST']) 
def login(): 
    if request.method == 'GET': 
     if 'user' in session: 
      return redirect('/home') 
     else: 
      return render_template('login.html', message = None) 
    else: 
     username = request.form['username'] 
     pwd = request.form['password'] 
     user = User.where('username', username).where('pwd', pwd).get().first() 
     if(user == None): 
      return render_template('login.html', message = 'Usuario o contraseña incorrecta') 
     else: 
      session['user'] = { 
       'id': user.id, 
       'username': user.username, 
       'photo': user.photo 
      } 
      return redirect('/home') 

@root.route('/home') 
def home(): 
    if 'user' in session: # THIS IS FALSE, SESSION IS EMPTY 
     return render_template('home.html') 
    else: 
     return redirect(url_for('root.login', message = None)) 

フラスコセッションのみの小さなデータを受け入れますか?ありがとう。

答えて

0

申し訳ありませんが、セッションに大きな画像を保存しないでください。

これを実現する良い方法は、一意のイメージIDを格納し、この一意のIDでurlを呼び出すことです。このように:

<img src = "//myview?id=513654534343543543" /> 
+0

わかりました。テーブルにTextというイメージがあるので、一時フォルダに書き込んで、ビューから参照することができます。あなたの提案をありがとう。 Javaでは、ちょうど写真(バイト[])をセッションに入れ、JSでbase64に変換します。ありがとう兄貴 –

関連する問題