我有一个flask应用程序,该应用程序使用flask_login登录。此应用程序为登录用户提供了一些受保护的路由,如果他们未登录,则将在登录后将其重定向到登录路由,并将它们重定向到在登录前尝试获取的路由。 一切正常,除了将用户重定向到下一条路由。
我以为这是烧瓶重定向问题,但我检查了浏览器网络(Chrome),发现烧瓶正在重定向页面,并且在“预览”选项卡中可以看到我的模板,但工具栏中的实际视图和网址没有得到改变。
@public.route('/auth/login', methods=('GET', 'POST'))
def login_ajax():
if request.method == "POST":
data = request.get_json(silent=True)
if data.get('email') == '' or data.get('password') == '' or
len(data.get('email')) > 30 or len(
data.get('password')) > 30:
error = {'errorStatus': 1, 'message': 'اطلاعات وارد شده صحیح
نیست'}
return jsonify(error)
getUser = Users.objects(email=data.get('email')).first()
if getUser:
dbPassword = getUser['password']
checkPassword = bcrypt.check_password_hash(dbPassword,
data.get('password'))
if checkPassword:
login_user(getUser)
if 'next' in session:
next = session['next']
if is_safe_url(next):
return redirect(next)
return 'login'
error = {'errorStatus': 1, 'message': 'رمز عبور صحیح نیست'}
return jsonify(error)
error = {'errorStatus': 1, 'message': 'کاربری با این ایمیل یافت
نشد'}
return jsonify(error)
return abort(404)
@public.route('/login')
def login():
return render_template('public/login.html')
def is_safe_url(target):
ref_url = urlparse(request.host_url)
test_url = urlparse(urljoin(request.host_url, target))
return test_url.scheme in ('http', 'https') and \
ref_url.netloc == test_url.netloc
,如果有帮助,我可以在前端使用vuejs。
在这里,我将附上屏幕截图,以便您理解我的意思: