多用户会话管理网

问题描述

im试图使用用户身份验证来构建Flask应用程序。每个用户都有不同的页面要显示。我面临的问题是,只要用户A登录他的用户名都保存在会话变量中,我就可以使用它来防止用户不先登录就切换url。但是只要用户B登录,用户A就能看到用户B可以进行的操作。先前的会话数据被覆盖。如果有人能让我知道每次有新用户进入时,我该如何声明另一个会话,那真是太神奇了。

from flask import Flask,render_template,redirect,session,request,g,make_response,url_for
import psycopg2
import os
appt = Flask(__name__)
appt.secret_key= os.urandom(16)

conn=psycopg2.connect( database="one",user="postgres",password="0000",host="localhost",port="5432" )

cursor = conn.cursor()
cursor.execute("select username from use") 
us=cursor.fetchall()
cursor.execute("select password from use")
psw= cursor.fetchall()
 

我将上述数据库数据用于用户身份验证

@appt.route('/',methods=['GET','POST'])
def index():
    if request.method=='POST':
        global user_name        
        user_name=request.form['username'] # make it global
        pass_word=request.form['password']     
        for i in range(len(us)):
            if user_name in us[i][0]:                    
                new=psw[i][0]                                      
                if new==pass_word:
                    print(session.get('user'))
                    if 'user' not in session:
                        print('new user')
                        user = request.form['username'] # setting user to cookie with userid: username
                        resp = make_response(render_template('monitor.html'))
                        resp.set_cookie('userID',user)  # setting a cookie
                        print(request.cookies.get('userID'))             
                        return resp
                    else:
                        print('old user')
                        return session.get('user')   
        else:
            return render_template('login.html',info="invalid user")                                 
    return render_template('login.html')   
 @appt.route('/logout','POST'])
    def logout(): 
        print("hello")  
        if g.user:
            if request.method == 'GET':
                print("hello")
                print(session['user'][0])
                session.pop('user',None)       
            return render_template("login.html")
        else:
            return redirect("monitor.html")    
    
    @appt.before_request
    def before_request():
        #g.user=None
        if 'user' in session:
            g.user = session['user']
    
    if __name__ == '__main__':
        appt.run(debug=True) 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...