在 HttpResponse 中设置授权 header 引发 "borrowed value does not live long enough"
Setting Authorization header in HttpResponse throws "borrowed value does not live long enough"
我正在使用 actix-web 在 REST api 中对用户进行身份验证。用于验证用户的端点将响应 object 的“授权”header 设置为生成的令牌。
async fn signin(request: web::Json<UserAndPw>) -> impl Responder {
let token = String::from("thisisatest");
HttpResponse::Ok()
.header(AUTHORIZATION, HeaderValue::from_static(&token))
.json(ApiResponse {...})
}
这是编译时出现的错误:
.header(AUTHORIZATION, HeaderValue::from_static(&test_token))
-------------------------^^^^^^^^^^^-
| | |
| | borrowed value does not live long enough
| argument requires that `test_token` is borrowed for `'static`
在您的情况下,token
是一个局部变量,对它的引用 (&token
) 绝对不是静态生命周期。编译器错误解释并显示给你。
您可能想通过其他方式创建 HeaderValue
实例,而不是通过 from_static
。例如:HeaderValue::from_str(&token)
.
我正在使用 actix-web 在 REST api 中对用户进行身份验证。用于验证用户的端点将响应 object 的“授权”header 设置为生成的令牌。
async fn signin(request: web::Json<UserAndPw>) -> impl Responder {
let token = String::from("thisisatest");
HttpResponse::Ok()
.header(AUTHORIZATION, HeaderValue::from_static(&token))
.json(ApiResponse {...})
}
这是编译时出现的错误:
.header(AUTHORIZATION, HeaderValue::from_static(&test_token))
-------------------------^^^^^^^^^^^-
| | |
| | borrowed value does not live long enough
| argument requires that `test_token` is borrowed for `'static`
在您的情况下,token
是一个局部变量,对它的引用 (&token
) 绝对不是静态生命周期。编译器错误解释并显示给你。
您可能想通过其他方式创建 HeaderValue
实例,而不是通过 from_static
。例如:HeaderValue::from_str(&token)
.