У меня есть страница входа, настроенная с помощью безопасности фляги, после того как пользователь войдет в нее, она перенаправит на страницу администратора, теперь я хочу создать еще одну страницу входа для конечного пользователя (клиенты).
Я создал форму, котораяотправить электронную почту и пароль в колбу.Затем проверьте, есть ли в базе данных адрес электронной почты и пароль, затем login_user (пользователь).jquery предполагает загрузку другой страницы с текущим идентификатором пользователя, но возвращает None.
Login.py
@login.route('/userLogin/log', methods=['GET','POST'])
def Login():
data = request.get_json()
email = data["email"]
passw = data["password"]
user = UsersModel.query.filter_by(email=email).first()
if user:
if verify_password(user.password, passw):
login_user(user)
return jsonify({'message':"done"})
else:
return jsonify({'message':gettext('Email and Password do not exist')}),422
return render_template('front/cart.html')
@login.route('/homepage')
def homepage():
id = "Hello" + str(current_user.get_id())
return id
init .py
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:@127.0.0.1/docwhere'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
#app.config['JWT_AUTH_USERNAME_KEY']='phoneNo'
#app.config['WTF_CSRF_CHECK_DEFAULT']=False
app.config['SECURITY_REGISTERABLE'] = False
app.config['SECURITY_PASSWORD_SALT']='rreer##@'
app.config['CKEDITOR_FILE_UPLOADER'] = '/admin/upload/'
app.config['CKEDITOR_FILE_BROWSER']='/fm/index.html'
app.config['UPLOADED_FILES_DEST'] = '/static/uploads'
app.secret_key = 'EiEiO##$'
app.config['FLASKFILEMANAGER_FILE_PATH'] = '/static/uploads'
app.config['BABEL_DEFAULT_LOCALE']='en'
app.path = '/static/uploads/'
app.database_path = '/static/uploads/'
db.init_app(app)
class JSONEncoder(BaseEncoder):
def default(self, o):
if isinstance(o, _LazyString):
return text_type(o)
return BaseEncoder.default(self, o)
app.json_encoder = JSONEncoder
babel = Babel(app)
csrf = CSRFProtect(app)
ckeditor = CKEditor(app)
login_manager = LoginManager()
login_manager.init_app(app)
security = Security(app, user_datastore)
Обновление: кнопка отправки Jquery
$('#login').click(function(e){
e.preventDefault();
url = "/userLogin/log "
var csrf_token = "%% csrf_token() %%";
var ob = {"email": $("#login-user").val(),
"password": $('#login-pass').val()
};
console.log(ob);
$.ajax({
url: url,
type: 'post',
headers: {
"Content-Type": "application/json",
"X-CSRFToken": csrf_token,
},
traditional: true,
data: JSON.stringify(ob),
success: function (message) {
window.location.replace("%%
url_for('login.homepage')%%%%process_query_string(request)%%");
},
error: function (err) {
error = "";
$(".btn").removeAttr("disabled");
for (key in err.responseJSON) {
error += key + ":" + err.responseJSON[key] + "<br>";
}
if (error)
$("#error").html("<p>" + error + "</p>");
else
$("#error").html("<p>" + err.responseText + "</p>");
$("#error").show();
}
});
return false;
});