如何使用 Fairings 拒绝火箭中的传入请求

问题描述 投票:0回答:1

我正在尝试检查用户是否已使用 Fairing 发送 cookie,但我无法找到通过阻止传入请求来拒绝传入请求的解决方案。

#[rocket::async_trait]
impl Fairing for LoginCheck {
    fn info(&self) -> Info {
        Info {
            name: "Login Check",
            kind: Kind::Request | Kind::Response,
        }
    }

    async fn on_request(&self, request: &mut Request<'_>, _: &mut Data<'_>) {
        let auth_cookie = request.cookies().get("auth")
        // block the request here
    }

    async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) {
        response.set_header(Cookie::new("auth", "test cookie"));
    }
}

我想知道一种阻止请求的方法,或者是否有其他方法可以解决路由处理程序不必检查用户是否已发送 cookie 的问题。

middleware rust-rocket
1个回答
0
投票

我不会使用请求整流,而是使用响应整流,以便您可以编辑响应。

async fn on_response<'r>(&self, _request: &'r Request<'_>, response: &mut Response<'r>) 
        // Insert logic on whether or not to deny
        response.set_status(Status::Forbidden);
    }
© www.soinside.com 2019 - 2024. All rights reserved.