У меня есть следующий обработчик конечной точки POST входа в мой Rocket API:
#[post("/login", data = "<login_form>")]
pub fn login_validate(login_form: Form<LoginForm>) -> Result<Redirect, Template> {
let user = get_user(&login_form.username).unwrap();
match user {
Some(existing_user) => if verify(&login_form.password, &existing_user.password_hash).unwrap() {
return Ok(Redirect::to(uri!(home)))
},
// we now hash (without verifying) just to ensure that the timing is the same
None => {
hash(&login_form.password, DEFAULT_COST);
},
};
let mut response = Template::render("login", &LoginContext {
error: Some(String::from("Invalid username or password!")),
});
// TODO: <<<<<<<<<< HOW CAN I SET AN HTTP STATUS CODE TO THE RESPONSE?
Err(response)
}
Я пытаюсь установить код ответа статуса HTTP, но я не могу найти правильный способ сделать это? Было бы хорошо уведомить браузер, что логин был не успешным с чем-то отличным от 200.