- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下源代码。我有一个 AlamoFire SessionManager 和一个使用该 SessionManager 发出 HTTP 请求的 ViewController。
var Almgr : Alamofire.SessionManager = {
// Create the server trust policies
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"localhost": .disableEvaluation
]
// Create custom manager
let configuration = URLSessionConfiguration.default
UserDefaults.standard.synchronize()
var jwt = UserDefaults.standard.string(forKey: conf.JWT_KEY)
var headers : HTTPHeaders = Alamofire.SessionManager.defaultHTTPHeaders
let extraHeaders : HTTPHeaders = [
"Authorization": "Bearer "+(jwt ?? ""),
"Accept": "application/json"
]
extraHeaders.forEach({ (k, v) in
headers[k] = v
})
configuration.httpAdditionalHeaders = headers
let man = Alamofire.SessionManager(
configuration: configuration,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
return man
}()
从上面的代码中,您可以看到,我正在读取 UserDefaults.standard.string
以获取 JWT token 的值并在我发出的每个 HTTP 请求中发送它。
我使用这个 Almgr 的方式很直接,比如从 View Controller ,
Almgr.request("my-url", method: .get).validate().responseJSON { 响应在
然而,问题是,Almgr 似乎只初始化了一次,即使我通过将其设置为不同的值来更改 JWT token ,通过,UserDefaults.standard.set(jwt, forKey: conf.JWT_KEY)
在 UserDefaults 中,它的值没有被获取。
在 View Controller 中,我有以下代码:
print("Getting JWT in MyViewController", UserDefaults.standard.string(forKey: conf.JWT_KEY))
Almgr.request("my-url", method: .get).validate().responseJSON { response in
打印语句为 JWT token 打印了一个不同的(正确的)值,而不是 Almgr,后者使用应用程序启动时存在的旧 JWT。
现在我的问题是,如何让 Almgr 在被调用时始终延迟评估正确的 JWT 值。
如果重要的话,我正在使用 Alamofire 4.5 和 Swift 4.0。
最佳答案
解决方案是使用请求适配器。
相关源码:
class AccessTokenAdapter: RequestAdapter {
private let accessToken: String
init(accessToken: String) {
self.accessToken = accessToken
}
func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
var urlRequest = urlRequest
if let urlString = urlRequest.url?.absoluteString, urlString.hasPrefix("https://httpbin.org") {
urlRequest.setValue("Bearer " + accessToken, forHTTPHeaderField: "Authorization")
}
return urlRequest
}
}
let sessionManager = SessionManager()
sessionManager.adapter = AccessTokenAdapter(accessToken: "1234")
sessionManager.request("https://httpbin.org/get")
关于ios - alamofire 在 SessionManager 中更新 JWT header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170544/
我正在使用 RxAlamofire 更新我的代码。我用最新版本更新了 RxAlmofire。我如何更新这段代码config.httpAdditionalHeaders = SessionManager
我正在尝试将其他人的代码迁移到 Swift 3。一切都很顺利,除了一行我无法弄清楚。它在 Swift 2.2 中工作正常,但在 Swift 3 中无法编译。它返回错误: Cannot call val
我正在运行 Wildfly 8.1 服务器。我有自己的 SessionManager 实现 io.undertow.server.session.SessionManager。我想配置系统以使用我的
我需要一些帮助。我在尝试使用挂毯 5.3.6、hibernate 4.1.7.Final 和 Mysql 5.1.21 将一些表单数据存储到我的数据库中时遇到此错误 实际上,数据存储在数据库中,但单击
这是我在设置 SessionManager 时尝试更改超时长度的代码: private var defaultSessionManager: Alamofire.SessionManager = {
我是 ZF2 的新手,不太习惯如何做事。我想使用 session 来跟踪用户(记住我)。我在类的一部分中有这段代码: $sessionManager = new \Zend\Session\Sessi
我在谷歌上找到了很多关于这个问题的引用,但没有答案。我正在使用最新版本的 jetty (8.1.2.v20120308),但似乎无法获得能够使用 session 的嵌入式 servlet。该示例当然是
使用 Alamofire 4.0 和 Swift 3.0 可以实现: Alamofire.request("http://content.uplynk.com/player/assetinfo/ab1
ServletContainerSessionManager 不是 ValidatingSessionManager;它是否遵循底层容器来处理孤立清理?这似乎不对。 我认为切换到 DefaultWeb
全部。现在我通过观看《Coding for entreprenus》来学习 iOS 和 swift、alamofire。我使用 swift3 和 alamofire4,但他们教它 alamofire3
所以我正在为我的项目制作一个用于 Alamofire 网络的实用程序类。 我在里面有各种功能,比如: func createAccount() func login() 我想对所有这些功能的请求和响应
我想做什么:我正在将 Spotify SDK 实现到我的 iOS 项目中。我已成功收到 Spotify API 的访问 token ,因为我能够使用所述 API 执行搜索艺术家、搜索歌曲和查看播放列表
请给我建议如何正确设置 Jetty。我使用的是最新版本的 jetty (9.0.6.v20130930)。我订购了服务器实现具体的 servlet,但它不起作用! 我已经与 Jetty 合作过一些,但
当我尝试在 shiro.ini 中设置 session 超时时,我面临另一个问题像这样: securityManager.sessionManager.globalSessionTimeout = 3
为什么我收到此错误,我没有。我已经在使用 Alamofire 5 时将 Alamofire 更改为 AF。请指导有什么问题和需要更改的地方。下面是我收到错误的代码: private func cal
我想在 Cassandra 中检测通过 datastax java 驱动程序执行的查询。扩展 com.datastax.driver.core.SessionManager 是这样吗?另外,如果扩展
在 AFHTTPSessionManager 的子类中,在调用 GET 方法之前,我有以下内容: [self.requestSerializer setValue:userName forHT
所以,我正在使用 Alamofire 发出一些 HTTP 请求,并且我正在尝试使用缓存策略,但服务器的 header 中没有“Cache-Control”标志。所以我想使用 session 管理器添加
几个月来我一直面临这个问题,我已经阅读了几乎所有关于此的信息并实现了大多数解决方案,但仍然没有任何改变。我不知道我在哪里犯了错误。 我正在使用自定义 SessionManager 类在我的 ASP.n
我发现 ZF2 session 和超时有一些奇怪且令人沮丧的行为。 这是我用来设置 session 的代码: $sessionConfig = new \Zend\Session\Config
我是一名优秀的程序员,十分优秀!