2017-08-16 61 views
1

我目前正在嘗試將passport-ldap和passport-jwt實現到我的其餘API。對於路由我使用pleerock/routing-controllers,它有一個授權的方式,但它與布爾和護照作品,我真的不知道。我甚至不確定是否有可能將兩者結合起來。如何將護照與路由控制器結合使用?

當前AuthorizationChecker返回false,因爲我不知道如何將passport.authenticate轉換爲布爾值。

useExpressServer(app, { 
controllers: [UserController, IssueController, LoginController], 
authorizationChecker: async (action: Action) => { 
    return false; 
} 
@Authorized() 
@Get("/test") 
test(@Res() response: Response){ 
    response.send("Test done.") 
} 

如何使用passport.authenticate()與路由控制授權?

+0

你拿出一個解決的辦法?我正在嘗試做同樣的事情。我正在考慮全球中間件,使用passport-jwt。 –

+0

@ØysteinAmundsen我編輯了我的答案 –

回答

0

要使用authenticate()您必須將其用作中間件。這是路由控制器上的link如何使用中間件。對於authenticationChecker

import * as jwt from 'jwt-simple'; 

currentUserChecker: async (action: Action) => { 
     const token = action.request.headers["authorization"]; 
     console.log(token) 
     let key= jwt.decode(token, "Banana"); 
     console.log(key) 
     let user = await mongoose.model("users").findOne({'key': key.key}); 
     if (user != null && token != null) return user; 
    } 

這是一個設置爲智威湯遜認證與護照,智威湯遜