我遇到一种情况,需要在身份验证令牌过期之前重新验证 cordova 应用程序上的令牌。为此,我想我应该在身份验证令牌到期之前设置一个超时,以重新进行身份验证。
function authenticate() {
var token = ... get token
setTimeout(function() {
.. try to reauthenticate
}, token.expiresIn - 600*1000);
}
Run Code Online (Sandbox Code Playgroud)
我看到的问题是-
当应用程序处于睡眠状态时,超时时间已过。功能不火?
当应用程序处于睡眠状态时,超时“倒计时”(如果是这样的话)会暂停。
这些都不是好的场景。所以我的问题是,当应用程序失去焦点时超时会发生什么?我是否应该设置 10 秒的时间间隔来检查此场景的过期时间?
编辑:
假设令牌的有效期为 4 小时。如果用户使用该应用程序一小时,最小化它 2 小时并返回,该函数会在 1 小时还是 3 小时内调用?这将是间隔的点,所以我可以相对快速地检查情况。
是否可以在 InAppBrowser 中打开一个站点,让该站点用于window.open打开另一个窗口,然后向该另一个窗口发送消息(反之亦然)?
我有一个使用BouncyCastle作为安全提供程序的应用程序,但我想切换到直接使用OpenSSL的其他应用程序(Conscrypt)。我遇到的问题是,我正在使用BouncyCastle提供的KeyGenerator中的ECDH“密钥”,但在我的其他库中没有类似的KeyGenerator。
为了比较两者,我将使用下面的输入使用两种方法对点进行解码:
添加了换行符以提高可读性
BADX_GAXp03z_5p05O1-op61KJAl4j9U2sBnAnJ4p_6GSAIyFGU3lM
oC4aIXw_2qlTnplykArgjvwCWw-2g6L44
Run Code Online (Sandbox Code Playgroud)
使用BouncyCastle方法-
public org.bouncycastle.jce.interfaces.ECPublicKey loadECPublicKeyBC(String encodedPublicKey) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeySpecException, IOException {
Base64.Decoder base64Decoder = Base64.getUrlDecoder();
byte[] decodedPublicKey = base64Decoder.decode(encodedPublicKey);
KeyFactory keyFactory = KeyFactory.getInstance("ECDH", "BC");
ECParameterSpec ecParameterSpec = ECUtil.getECParameterSpec(openSSLProvider, "prime256v1");
ECPoint ecPoint = ECUtil.decodePoint(decodedPublicKey, ecParameterSpec.getCurve());
ECPublicKeySpec pubSpec = new ECPublicKeySpec(ecPoint, ecParameterSpec);
org.bouncycastle.jce.interfaces.ECPublicKey ecPublicKey = (org.bouncycastle.jce.interfaces.ECPublicKey)keyFactory.generatePublic(pubSpec);
return ecPublicKey;
}
Run Code Online (Sandbox Code Playgroud)
在getAlgorithm返回的EC。在getFormat返回的X.509。
此getEncoded值是-
[48,-126,1,51,48,-127,-20,6,7,42,-122,72,-50,61,2,1,48,
-127,-32,2,1,1,48,44,6,7,42,-122,72,-50,61,1,1,2,33,0,
-1,-1,-1,-1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,48,68,4,32,-1,-1,-1,-1,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-4,4,32,90,-58,53,-40,-86,58,-109,-25,-77,-21,-67,85,
118,-104,-122,-68,101,29,6,-80,-52,83,-80,-10,59,-50,60,
62,39,-46,96,75,4,65,4,107,23,-47,-14,-31,44,66,71,-8,-68,
-26,-27,99,-92,64,-14,119,3,125,-127,45,-21,51,-96,-12,
-95,57,69,-40,-104,-62,-106,79,-29,66,-30,-2,26,127,-101,
-114,-25,-21,74,124,15,-98,22,43,-50,51,87,107,49,94,-50,
-53,-74,64,104,55,-65,81,-11,2,33,0,-1,-1,-1,-1,0,0,0,0,-1,
-1,-1,-1,-1,-1,-1,-1,-68,-26,-6,-83,-89,23,-98,-124,-13,
-71,-54,-62,-4,99,37,81,2,1,1,3,66,0,4,0,-41,-4,96,23,-89,
77,-13,-1,-102,116,-28,-19,126,-94,-98,-75,40,-112,37,-30,
63,84,-38,-64,103,2,114,120,-89,-2,-122,72,2,50,20,101,55, …Run Code Online (Sandbox Code Playgroud) 我正在从注册分区转向分区投影。
以前我的数据被分区p_year={yyyy}/p_month={MM}/p_day={dd}/p_hour={HH}/...,我将这些移动到p_date={yyyy}-{MM}-{dd} {HH}:00:00/..
我有一个最近事件表,用于存储最近 2 天的事件。所以我的p_date范围是NOW-2DAYS,NOW. 完整的表参数是-
projection.enabled: 'True'
projection.p_date.type: 'date'
projection.p_date.range: NOW-2DAYS,NOW
projection.p_date.format: 'yyyy-MM-dd HH:mm:ss'
projection.p_date.interval: 1
projection.p_date.interval.unit: 'HOURS'
Run Code Online (Sandbox Code Playgroud)
但是当我尝试查询这个时,我没有得到任何结果。
SELECT COUNT(*) FROM recent_events_2d_v2
> 0
Run Code Online (Sandbox Code Playgroud)
但是,如果我将日期范围更改为,2020-09-01 00:00:00,NOW我确实会得到结果。
分区投影的相对日期范围似乎有些不对劲。谁能看到我可能做错了什么,或者这是一个错误?
在节点服务器上,我想将上传的datauri数据另存为图像。为此,我尝试了解码此png-的内容
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAIAAAFlEcHbAAAAB3RJTUUH1gMWFjk7nUWcXQAAAAlwSFlzAABOIAAATiABFn2Z3gAAAARnQU1BAACxjwv8YQUAAAAeSURBVHjaY7h79y7DhAkTGIA04/Tp0xkYGJ49ewYAgYwLV/R7bDQAAAAASUVORK5CYII=
Run Code Online (Sandbox Code Playgroud)
并将其保存为.png扩展。看起来还有更多。如何解码datauri并将其保存为文件?
AWS文档使得它看起来好像您可以指定DataFormatConversionConfiguration一个AWS::KinesisFirehose::DeliveryStreaminformation,但不是关于该属性应该去哪里的文档.试了下加入它Properties,ExtendedS3DestinationConfiguration,ProcessingConfiguration,和的一个Processors.每次,CF都抱怨 -
以下资源无法更新:[EventFirehose].12:24:32 UTC-0500
UPDATE_FAILED AWS :: KinesisFirehose :: DeliveryStream EventFirehose遇到不受支持的属性DataFormatConversionConfiguration
有自己的文件说 -
如果您希望Kinesis Data Firehose将输入数据的格式从JSON转换为Parquet或ORC,请在ExtendedS3DestinationConfiguration或ExtendedS3DestinationUpdate中指定可选的DataFormatConversionConfiguration元素.
我究竟做错了什么?
amazon-web-services aws-cloudformation amazon-kinesis-firehose
我正在研究使用 Lambda@Edge 将从外部源生成的事件放入内部 SQS 队列中。lambda 只需要在必要时对其进行转换,进行交接,然后离开。我希望速度尽可能快,所以我的问题是,除了 SQS 之外,使用 SNS 是否有好处,或者我应该只使用 SQS?
换句话说,考虑到这两种配置,其中一种对最终用户来说性能会更好吗?
A) 请求进入 Lambda@Edge,Lambda 转换请求并将事件发送到 SNS,SNS 将事件发送到 SQS。
B) 请求进入 Lambds@Edge,lambda 转换请求并将事件直接放入 SQS。
编辑:
我说的是跨区域。
我正在开发一个名为expresskit的库,它允许您使用装饰器来定义express的路线/参数/等。我正在重构,我认为我需要限制路由可以具有的响应类型。作为示例,以下是现在创建路由的方式 -
export default class UserRouter {
@Route('GET', '/user/:userId')
public static getUser(@Param('userId') userId: number): any {
return new User();
}
}
Run Code Online (Sandbox Code Playgroud)
路由应用于静态方法。静态方法可以直接返回一个值,也可以返回一个Promise. 我想要求这样的承诺-
export default class UserRouter {
@Route('GET', '/user/:userId')
public static async getUser(@Param('userId') userId: number): Promise<User> {
return Promise.resolve(new User());
}
}
Run Code Online (Sandbox Code Playgroud)
原因是,这些路由背后的逻辑变得臃肿和混乱,无法处理不同类型的响应。由于大多数路由可能是异步的,因此我宁愿通过依赖异步来获得更清晰的核心代码。我的路线装饰器功能如下所示-
export default function Route(routeMethod: RouteMethod,
path: string) {
return function(object: any, method: string) {
let config: IRouteConfig = {
name: 'Route',
routeMethod: routeMethod,
path: path
};
DecoratorManager.registerMethodDecorator(object, method, config);
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个通用管理器服务来跟踪装饰器的注册位置。在示例中,我可以获得类和方法名称。我可以稍后像这样引用它 …
我有一个ng2组件中的元素,我想直接操作.我不需要或希望它的属性由框架处理,因为它的属性将在逐秒的基础上更新,我不希望它影响生命周期.在我的例子中(不是实际的用例),我将使用一个每秒递增的计时器.
HTML的
<div class="timer"></div>
<div>Elapsed</div>
Run Code Online (Sandbox Code Playgroud)
零件-
@Component({
selector: 'timer',
templateUrl: 'timer.html',
})
export class TimerComponent {
private time = 0;
// How do I get .timer ?
constructor(private $element: ElementRef) {}
onNgInit() {
setInterval(this.incrementTimer.bind(this), 1000);
}
private incrementTimer() {
this.time++;
this.$element.nativeElement.innerHTML = this.time;
}
}
Run Code Online (Sandbox Code Playgroud)
我有很多选项来获取计时器元素,但我想知道是否有一种简单的方法(一种角度方式)来标记元素,以便角度将理解/包含在注入器中.我不想在DOM中搜索这个元素,我不想每次想要更新时都使用生命周期.
我有一个MessageQueue带有私有List属性的类,它充当队列.只有一种方法可以添加到队列中(通过Add方法)和一种从队列中获取的Next方法(通过方法).我有一个线程运行没有延迟不断检查队列.偶尔,一个null项目进入队列.
Add如果要添加的项为null,则在方法中放置断点,但断点永远不会被命中.
Next如果返回的项目被null击中,我在方法中放置一个断点.
此外,断点在获取项目之后但在调整队列之前设置.奇怪的是,当返回的项目是null,刚刚获取的项目不为空!这是我的队列 -
public class MessageQueue
{
private List<byte[]> queue = new List<byte[]>();
public void Add(byte[] payload)
{
if (payload == null)
{
Console.WriteLine("thats why");
}
queue.Add(payload);
}
public byte[] Next()
{
byte[] hand = queue.First();
if(hand == null)
{
Console.WriteLine("asdf");
}
queue = queue.Skip(1).ToList();
return hand;
}
public bool HasMessages
{
get
{
return queue.Count() > 0;
}
} …Run Code Online (Sandbox Code Playgroud) javascript ×2
node.js ×2
amazon-sns ×1
amazon-sqs ×1
android ×1
angular ×1
aws-glue ×1
aws-lambda ×1
base64 ×1
bouncycastle ×1
c# ×1
cordova ×1
data-uri ×1
encryption ×1
inappbrowser ×1
java ×1
openssl ×1
postmessage ×1
typescript ×1