请原谅我,如果之前有人询问过,有很多资源可以触及,但似乎没有什么适合我的特定(https)用例.
我正在尝试将https://www.example.com重定向到https://example.com.同样,这应该适用于http://www.example.com到https://example.com.
我已经设置了一个带有s3存储桶源的云端分发,将http重定向到https,添加了cname example.com并添加了我的域证书(适用于www子域以及裸域).
我还设置了一个单独的发行版,其中包含www.example.com的cname,添加了证书并将原点设置为一个单独的s3存储桶,在(静态网站托管)中将所有请求重定向到https://example.com.
重定向按预期方式运行http://example.com到https://example.com,但http:s://www.example.com到https://example.com则没有.
在路由53中,我将根域别名为第一个云端分布,而www别名为第二个.
我们已经创建了我们自己的oauth 2服务器,其代码库具有授权代码实现. https://github.com/FrankHassanabad/Oauth2orizeRecipes
但我们正在尝试将oauth2客户端身份验证集成到Web应用程序中,其中包括反应路由器和流量实现.
我们查看了许多git存储库,但没有得到任何正确的方法来执行此操作.
是否有任何实施指向我们如何实现?
再次感谢.
UPDATE
我们正在调查下面的存储库,但仍然不清楚我们如何使工作.比如在哪里合并auth和oauth逻辑以及在服务器/客户端方面做些什么.
https://github.com/rackt/react-router/tree/master/examples/auth-flow
https://github.com/andreareginato/simple-oauth2
我正在尝试验证已弃用的iOS transactionReceipt ; 我坚持验证签名.
我已经base64解码了收据并解析了初始plist,结果是:
payload = {
"signature"=>"AnTJSzQAjehWYmnqlofOYVqrXJ51UNZr9//2HXq3MB9i2aPjVilv38ixmZoO/9YfPlRHYDusXT2IpYbDs4pFZNw/mQL1TzkIIetYea4OyjuV5KluEB4LKVol7nmHfd27HI6PM6jBDZKLmpktmNVCmfnheT+jlMjLx7eZKjHSFhlRAAADVzCCA1MwggI7oAMCAQICCBup4+PAhm/LMA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEzMDEGA1UEAwwqQXBwbGUgaVR1bmVzIFN0b3JlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDYwNzAwMDIyMVoXDTE2MDUxODE4MzEzMFowZDEjMCEGA1UEAwwaUHVyY2hhc2VSZWNlaXB0Q2VydGlmaWNhdGUxGzAZBgNVBAsMEkFwcGxlIGlUdW5lcyBTdG9yZTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMmTEuLgjimLwRJxy1oEf0esUNDVEIe6wDsnnal14hNBt1v195X6n93YO7gi3orPSux9D554SkMp+Sayg84lTc362UtmYLpWnb34nqyGx9KBVTy5OGV4ljE1OwC+oTnRM+QLRCmeNxMbPZhS47T+eZtDEhVB9usk3+JM2Cogfwo7AgMBAAGjcjBwMB0GA1UdDgQWBBSJaEeNuq9Df6ZfN68Fe+I2u22ssDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDYd6OKdgtIBGLUyaw7XQwuRWEM6MA4GA1UdDwEB/wQEAwIHgDAQBgoqhkiG92NkBgUBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAeaJV2U51rxfcqAAe5C2/fEW8KUl4iO4lMuta7N6XzP1pZIz1NkkCtIIweyNj5URYHK+HjRKSU9RLguNl0nkfxqObiMckwRudKSq69NInrZyCD66R4K77nb9lMTABSSYlsKt8oNtlhgR/1kjSSRQcHktsDcSiQGKMdkSlp4AyXf7vnHPBe4yCwYV2PpSN04kboiJ3pBlxsGwV/ZlL26M2ueYHKYCuXhdqFwxVgm52h3oeJOOt/vY4EcQq7eqHm6m03Z9b7PRzYM2KGXHDmOMk7vDpeMVlLDPSGYz1+U3sDxJzebSpbaJmT7imzUKfggEY7xxf4czfH0yj5wNzSGTOvQ==",
"purchase-info"=>"ewoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUtcHN0IiA9ICIyMDE1LTExLTE3IDA4OjM0OjQxIEFtZXJpY2EvTG9zX0FuZ2VsZXMiOwoJInB1cmNoYXNlLWRhdGUtbXMiID0gIjE0NDc4MjEyODEwMDAiOwoJInVuaXF1ZS1pZGVudGlmaWVyIiA9ICJkZDBlMzNlYmY1NmJiMWYzYWQ0YzJkYmFhN2EwYjMzYWM2OGIwZTg1IjsKCSJvcmlnaW5hbC10cmFuc2FjdGlvbi1pZCIgPSAiMTAwMDAwMDE4MDYzNjIyNiI7CgkiZXhwaXJlcy1kYXRlIiA9ICIxNDQ4MzQ2ODgxMDAwIjsKCSJ0cmFuc2FjdGlvbi1pZCIgPSAiMTAwMDAwMDE4MTI5ODczNCI7Cgkib3JpZ2luYWwtcHVyY2hhc2UtZGF0ZS1tcyIgPSAiMTQ0Nzc3ODA4MTAwMCI7Cgkid2ViLW9yZGVyLWxpbmUtaXRlbS1pZCIgPSAiMTAwMDAwMDAzMDkzODcxMyI7CgkiYnZycyIgPSAiMSI7CgkidW5pcXVlLXZlbmRvci1pZGVudGlmaWVyIiA9ICI0RTVFMUEzQi1GMDFBLTQ4NTUtODIwRi1GMzQ5RjEyNDIxNDgiOwoJImV4cGlyZXMtZGF0ZS1mb3JtYXR0ZWQtcHN0IiA9ICIyMDE1LTExLTIzIDIyOjM0OjQxIEFtZXJpY2EvTG9zX0FuZ2VsZXMiOwoJIml0ZW0taWQiID0gIjEwMjg5NTA3OTciOwoJImV4cGlyZXMtZGF0ZS1mb3JtYXR0ZWQiID0gIjIwMTUtMTEtMjQgMDY6MzQ6NDEgRXRjL0dNVCI7CgkicHJvZHVjdC1pZCIgPSAieWVhcmx5IjsKCSJwdXJjaGFzZS1kYXRlIiA9ICIyMDE1LTExLTE4IDA0OjM0OjQxIEV0Yy9HTVQiOwoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUiID0gIjIwMTUtMTEtMTcgMTY6MzQ6NDEgRXRjL0dNVCI7CgkiYmlkIiA9ICJjb20ubWJhYXN5Lmlvcy5kZW1vIjsKCSJwdXJjaGFzZS1kYXRlLXBzdCIgPSAiMjAxNS0xMS0xNyAyMDozNDo0MSBBbWVyaWNhL0xvc19BbmdlbGVzIjsKCSJxdWFudGl0eSIgPSAiMSI7Cn0=",
"environment"=>"Sandbox",
"pod"=>"100",
"signing-status"=>"0"
}
Run Code Online (Sandbox Code Playgroud)
所以现在我要验证签名,这是我到目前为止所拥有的:
version, sig, cert_length, cert = payload.fetch('signature')
.unpack('m').first
.unpack('c a128 N a*')
return false unless
version == 2 &&
sig.size == 128 &&
cert.size == cert_length
cert = OpenSSL::X509::Certificate.new cert
digest = OpenSSL::Digest::SHA1.new
digest << version.to_s
digest << payload.fetch('purchase-info').unpack('m').first
cert.public_key.verify OpenSSL::Digest::SHA1.new, sig, digest.digest
Run Code Online (Sandbox Code Playgroud)
结果cert.public_key.verify
始终是假的,这不是我想要的,因为我正在使用真实收据.
我正在使用这个Quora帖子作为指南,让我深入了解如何解压缩签名,并且我已经成功地从blob中提取了所有部分.
也许编码是一个问题?sig
并且data
都是ASCII-8BIT
并且version
是整数.
感谢您对此的帮助.
我有一条/messages/:id
呈现消息的路线.但是,如果id
指向不存在的消息,应该在何处以及如何处理?我的组件使用redux绑定到消息:
function mapStateToProps(state, ownProps) {
return {
message: state.messages[ownProps.params.id]
}
}
Run Code Online (Sandbox Code Playgroud)
然后message
会undefined
在情况下,没有这样的消息存在,该组件必须及时处理,并呈现不同的东西.然而,这似乎膨胀组件,我想也许这应该在路由器中处理?如果没有这样的消息,则不应该允许调用该路由.
有什么想法吗?
我相信这个问题已经被问过好几次了,但没有明确的答案。
有两种方法可以安排临时通知:UNCalendarNotification
和 UNTimeIntervalNotificationTrigger
。
安排一个特定时间和一周中的某一天的通知很简单,与一个月中的特定一天相同,但安排一个特定的时间,每 n 天就不那么简单了。
例如,每 5 天 11:00。
UNTimeIntervalNotificationTrigger
看起来似乎是合适的课程,但在夏令时或时区变化发生时会出现问题。例如,夏令时结束,现在您的通知时间为 10:00,而不是 11:00。
day
类上的属性和DateComponents
类UNCalendarNotification
可能包含解决方案,因为它在文档中说“一天或天数”。我将其解释为“一个月中的特定一天(一天)或n天数(天数)”。
进一步深入研究day
属性文档,它显示“此值在使用它的日历的上下文中进行解释”。
如何将该day
属性与日历上下文一起使用来计算天数而不是每月的特定天数?
hour
此外,和minute
属性的文档DateComponents
还分别为“一小时或数小时”和“一分钟或数分钟”。那么,即使您要设置day
为“天数”,如何正确设置hour
和呢?minute
很明显,此功能在 iOS 中是可行的 - 提醒应用程序就是证明。
nsdatecomponents ios uilocalnotification swift unusernotificationcenter
我有一个postgres表,看起来像这样:
id | user_id | state | created_at
Run Code Online (Sandbox Code Playgroud)
州可以是以下任何一种:
new, paying, paid, completing, complete, payment_failed, completion_failed
Run Code Online (Sandbox Code Playgroud)
我需要一个返回报告的语句,其中包含以下内容:
到目前为止我有这个:
SELECT
DATE(created_at) AS date,
SUM(CASE WHEN state = 'complete' THEN 1 ELSE 0 END) AS complete,
SUM(CASE WHEN state = 'paid' THEN 1 ELSE 0 END) AS paid
FROM orders
WHERE created_at BETWEEN ? AND ?
GROUP BY DATE(created_at)
Run Code Online (Sandbox Code Playgroud)
通过将此选项添加到选择中,可以轻松完成正在进行和失败的状态:
SUM(CASE WHEN state IN('new','paying','completing') THEN 1 ELSE 0 END) AS in_progress,
SUM(CASE WHEN state IN('payment_failed','completion_failed') THEN 1 ELSE …
Run Code Online (Sandbox Code Playgroud) 我希望以前没有回答过,我到处都看,但我已经空了.这里有一些类似的问题,但没有一个我想要的答案:
我想通过Graph API将Facebook Canvas App邀请发送给用户朋友签名的OAuth.
我似乎与文档一起转向,因为所有内容都指向JS SDK对话框(https://developers.facebook.com/docs/reference/dialogs/requests/).最终结果与"{用户}邀请您尝试{App name}"的受邀朋友的通知相同,但我不想使用JS对话框.
看来我应该在这里查看https://developers.facebook.com/docs/games/notifications但是当我尝试发送通知时,我只能发送给已经在使用该应用程序的用户.这个提示似乎暗示了我所看到的限制,但是使用的语言令人困惑:
来自应用的所有通知都以相同的方式处理,与发送方式无关,通过此API或作为个人对个人的请求.人们不会看到邀请的第一个收据提示,即他们没有授权应用程序,而朋友只是邀请他们试用该应用程序.
有人可以帮忙吗?
ios ×2
javascript ×2
amazon-s3 ×1
encryption ×1
facebook ×1
oauth ×1
openssl ×1
postgresql ×1
react-router ×1
reactjs ×1
redirect ×1
redux ×1
ruby ×1
sql ×1
ssl ×1
swift ×1