mirror of
https://github.com/Moya/Moya.git
synced 2026-03-18 19:52:28 +00:00
Changed the parameter type AuthorizationType to TargetType in the token closure;
Added MultiTarget pattern of "Access Token Auth" to AccessTokenPlugin docs.
This commit is contained in:
@@ -62,7 +62,7 @@ extension AuthorizationType: Equatable {
|
||||
*/
|
||||
public struct AccessTokenPlugin: PluginType {
|
||||
|
||||
public typealias TokenClosure = (AuthorizationType) -> String
|
||||
public typealias TokenClosure = (TargetType) -> String
|
||||
|
||||
/// A closure returning the access token to be applied in the header.
|
||||
public let tokenClosure: TokenClosure
|
||||
@@ -92,8 +92,8 @@ public struct AccessTokenPlugin: PluginType {
|
||||
else { return request }
|
||||
|
||||
var request = request
|
||||
|
||||
let authValue = authorizationType.value + " " + tokenClosure(authorizationType)
|
||||
let realTarget = (target as? MultiTarget)?.target ?? target
|
||||
let authValue = authorizationType.value + " " + tokenClosure(realTarget)
|
||||
request.addValue(authValue, forHTTPHeaderField: "Authorization")
|
||||
|
||||
return request
|
||||
|
||||
@@ -45,6 +45,22 @@ let token = "eyeAm.AJsoN.weBTOKen"
|
||||
let authPlugin = AccessTokenPlugin { _ in token }
|
||||
let provider = MoyaProvider<YourAPI>(plugins: [authPlugin])
|
||||
```
|
||||
If you use `MultiTarget` with different token, you can do like this:
|
||||
|
||||
```swift
|
||||
let fooToken = "eyeAm.AJsoN.weBTOKen.foo"
|
||||
let barToken = "eyeAm.AJsoN.weBTOKen.bar"
|
||||
let authPlugin = AccessTokenPlugin { target in
|
||||
if target is FooService {
|
||||
return fooToken
|
||||
} else if target is BarService {
|
||||
return barToken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
let provider = MoyaProvider<MultiTarget>(plugins: [authPlugin])
|
||||
```
|
||||
|
||||
The `AccessTokenPlugin` initializer accepts a `tokenClosure` that is responsible
|
||||
for returning the token to be applied to the header of the request.
|
||||
|
||||
|
||||
@@ -44,6 +44,22 @@ let authPlugin = AccessTokenPlugin { _ in token }
|
||||
let provider = MoyaProvider<YourAPI>(plugins: [authPlugin])
|
||||
```
|
||||
|
||||
如果你使用 `MultiTarget` 且返回不同的令牌,你可以像下面这样:
|
||||
|
||||
```swift
|
||||
let fooToken = "eyeAm.AJsoN.weBTOKen.foo"
|
||||
let barToken = "eyeAm.AJsoN.weBTOKen.bar"
|
||||
let authPlugin = AccessTokenPlugin { target in
|
||||
if target is FooService {
|
||||
return fooToken
|
||||
} else if target is BarService {
|
||||
return barToken
|
||||
}
|
||||
return ""
|
||||
}
|
||||
let provider = MoyaProvider<MultiTarget>(plugins: [authPlugin])
|
||||
```
|
||||
|
||||
`AccessTokenPlugin` 构造器接收一个`tokenClosure`闭包来负责返回一个可以被添加到request头部的令牌 。
|
||||
|
||||
2. 您的 `TargetType` 需要遵循`AccessTokenAuthorizable` 协议:
|
||||
|
||||
Reference in New Issue
Block a user