Skip to content

Commit adcceeb

Browse files
committed
store serde_json::Value in SyncContext; remove dependency of dangerous_decode.
1 parent 85eb822 commit adcceeb

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

roa/src/jwt.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ use crate::{
8080
async_trait, join, Context, Error, Middleware, Next, Result, State, SyncContext,
8181
};
8282
use headers::{authorization::Bearer, Authorization, HeaderMapExt};
83-
use jsonwebtoken::{dangerous_unsafe_decode, decode};
83+
use jsonwebtoken::decode;
8484
use serde::de::DeserializeOwned;
8585
use serde_json::Value;
8686
use std::sync::Arc;
@@ -185,15 +185,14 @@ where
185185
where
186186
C: 'static + DeserializeOwned,
187187
{
188-
let token = self.load_scoped::<JwtScope, Bearer>("token");
189-
match token {
190-
Some(token) => dangerous_unsafe_decode(token.token())
191-
.map(|data| data.claims)
188+
let value = self.load_scoped::<JwtScope, Value>("value");
189+
match value {
190+
Some(claims) => serde_json::from_value((*claims).clone())
192191
.map_err(|err| {
193192
Error::new(
194193
StatusCode::INTERNAL_SERVER_ERROR,
195194
format!(
196-
"{}\ntoken deserialized fails, this maybe a bug of JwtGuard.",
195+
"{}\nClaims value deserialized fails, this may be a bug of JwtGuard.",
197196
err
198197
),
199198
false,
@@ -229,10 +228,11 @@ impl<S: State> Middleware<S> for JwtGuard {
229228
.typed_get::<Authorization<Bearer>>()
230229
.ok_or_else(|| unauthorized(""))?
231230
.0;
232-
decode::<Value>(bearer.token(), &self.secret, &self.validation)
231+
let value = decode::<Value>(bearer.token(), &self.secret, &self.validation)
233232
.map_err(unauthorized)?;
234233
ctx.store_scoped(JwtScope, "secret", self.secret.clone());
235234
ctx.store_scoped(JwtScope, "token", bearer);
235+
ctx.store_scoped(JwtScope, "value", value.claims);
236236
next.await
237237
}
238238
}

0 commit comments

Comments
 (0)