2016-11-27 5 views
2

私は2つのエンティティのための蒸気AuthMiddlewareを使用しよう:カスタマー商人AuthMiddlewareを複数のエンティティに使用するにはどうすればよいですか?

https://vapor.github.io/documentation/auth/request.html

let auth = AuthMiddleware(user: Customer.self) { value in 
       return Cookie(
        name: "vapor-auth", 
        value: value, 
        expires: Date().addingTimeInterval(60 * 60 * 5), 
        secure: true, 
        httpOnly: true 
       ) 
      } 

しかし、私は見るように、最初に追加のミドルウェア(顧客が)(第2に置き換えられました加盟店):

drop?.middleware.append(auth) 

私はリクエストから資格情報でログインしようとした場合、R

drop?.addConfigurable(middleware: auth, name: "auth") 

だから:

guard let login = req.data["login"]?.string, 
    let password = req.data["password"]?.string else { 
     throw Abort.badRequest 
} 
let credentials = APIKey(id: login, secret: password) 
try req.auth.login(credentials) 

私はエラーがあります:

▿ Abort 
▿ custom : 2 elements 
    - .0 : HTTP.Status.badRequest 
    - .1 : "Invalid credentials." 

をしかし、それは、まず追加するエンティティのためにだけ投げましたAuthMiddlewareは他のAuthミドルウェアに置き換えられました...

このproblを解決できるかどうかを教えてくださいem。 ありがとう!あなたはグループの内部に置く(ととのエンドポイントを作成するためにauthedを使用)AuthMiddleware()を使用します

drop.group(AuthMiddleware()) { authed in 
    authed.get("endpoint") { req in 
    return "" 
    } 
} 

何か:

答えて

2

あなたはこのような何かを行うことができます。

+0

ありがとうございました!あなたが正しいです。 ** drop.addConfigurable(ミドルウェア:auth、名前: "auth")**の** inted ** ** drop.grouped( "customer")を使用する必要があります。 –

関連する問題