我正在使用登錄腳本在我的 Web 應用程式上啟用額外的身份驗證。身份驗證腳本是用 JavaScript 撰寫的,并用燒瓶嵌入到 python 中。
登錄腳本對用戶進行身份驗證,并在成功輸出和 ID 時進行身份驗證。
我想在我的 python 后端使用回傳給 Javascript 函式的 ID。此外,如果身份驗證成功,我想將用戶重定向到根頁面。
我搜索了這個論壇并在谷歌上搜索了如何使用 javascript 或 jQuery 來做到這一點。到目前為止,我確實設法通過 POST 請求將 ID 發送到后端。不知道這是否是最佳做法,感覺有點hacky。
此外,當我重定向請求時,我在我的 python 控制臺中看到了 GET 請求,但頁面沒有在我的瀏覽器中重定向。我認為這是因為 Javascript 或 jQuery。
主檔案
from flask import Flask, request, render_template, redirect, url_for
app = Flask(__name__, template_folder='/templates', static_folder='/static')
@app.route("/login", methods=['GET', 'POST'])
def login():
print(request.data)
if request.method == 'POST':
response = request.get_json()
print(response['userwid'])
return redirect('/')
else:
return render_template('login.html')
@app.route("/", methods=['GET', 'POST'])
def loggedin():
print('User is logged in')
return render_template('index.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug = True)
登錄.html
<!-- login.html -->
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
<script src="https://unpkg.com/moralis/dist/moralis.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<button id="btn-login">Login</button>
<button id="btn-logout">Logout</button>
<script type="text/javascript" src="/static/main.js"></script>
</body>
</html>
main.js
// main.js
const serverUrl = "REPLACED-THIS-PART";
const appId = "REPLACED-THIS-PART";
Moralis.start({ serverUrl, appId });
/** Add from here down */
async function login() {
let user = Moralis.User.current();
if (!user) {
try {
user = await Moralis.authenticate({ signingMessage: "Authenticating" })
console.log(user)
console.log(user.get('useracc'))
userwid= {'useracc': user.get('useracc')}
$.ajax({
type: "POST",
url: "/login",
data: JSON.stringify(userwid),
contentType: "application/json",
dataType: 'json',
});
} catch(error) {
console.log(error)
}
}
}
async function logOut() {
await Moralis.User.logOut();
console.log("logged out");
}
document.getElementById("btn-login").onclick = login;
document.getElementById("btn-logout").onclick = logOut;
uj5u.com熱心網友回復:
從技術上講,您可以在成功登錄后導航到 /login/userid?id=12345 之類的路由,其中?? 12345 是用戶 ID。
在您的燒瓶后端,您使用 idid = request.args.to_dict().get("id")并使用return redirect("/"). (有關使用燒瓶重定向的資訊:https ://pythonbasics.org/flask-redirect-and-errors/ )
我不知道,這是否是最好的做法,但這就是我會做的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453616.html
