java oracle database user dsn_跨会话序列化数据库连接
我正在開發一個web應用程序,它需要使用最終用戶提供的憑據登錄到數據庫;應用程序本身沒有登錄到數據庫。在
問題是如何為每個用戶會話創建一個連接。在
一種方法是:請求用戶憑據
檢查針對數據庫后端的憑據是否有效
在會話級變量中存儲憑據
這種方法的問題是,對于該會話的每個后續請求,您需要創建一個新的連接;這將很快耗盡到服務器的最大連接數。在
我正在將Flask與Oracle一起使用。在
在Flask中,有一個^{}對象,它存儲請求范圍內的對象。但是,此片段不起作用:app = Flask(__name__)
app.config.from_object(__name__)
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if g.db is None:
return redirect(url_for('login', next=request.url))
return f(*args, **kwargs)
return decorated_function
class LoginForm(Form):
username = TextField('Username', [validators.Length(min=4, max=25)])
password = PasswordField('Password', [validators.Required()])
@app.route('/app', methods=['GET','POST'])
@login_required
def index():
return 'Index'
@app.route('/', methods=['GET','POST'])
def login():
form = LoginForm(request.form)
if request.method == 'POST':
if form.validate():
try:
dsn = cx_Oracle.makedsn(app.config['DB_HOST'],
app.config['DB_PORT'], app.config['DB_SID'])
g.db = cx_Oracle.connect(form.username.data,
form.password.data, dsn)
except cx_Oracle.DatabaseError as e:
flash(unicode(e), 'error')
return render_template('login.html', form=form)
return redirect(url_for('index'))
else:
return render_template('login.html', form=form)
else:
return render_template('login.html', form=form)
AttributeError: '_RequestGlobals' object has no attribute 'db'
總結
以上是生活随笔為你收集整理的java oracle database user dsn_跨会话序列化数据库连接的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 特斯拉Model S遭破解!极速达348
 - 下一篇: 华为加持威力十足!AITO问界M5六月大