我们有一个现有应用程序使用 NextAuth 与 Okta 进行通信。这一切工作正常,我们刚刚添加了一个需要 Okta 访问令牌的 API,我们在 NextAuth 中使用JWT 回调从帐户对象中获取访问令牌,并将其添加到NextAuth 会话中。
这一切都工作正常,我们可以从会话中获取访问令牌并将其传递给 API,一切都很好,API 验证访问令牌,一切都很好。但是,有时我们回到会话时,对 API 的调用会失败,因为它无法验证访问令牌,因为它已过期。
我正在查看用于轮换刷新令牌的NextAuth 文档,我发现 Okta 有一个用于获取新刷新令牌的端点。这一切似乎都有道理,问题是,查看NextAuth 中的JWT 回调返回的内容,我没有得到刷新令牌,这些是 Okta 提供程序返回的 props。我们得到一个访问令牌和一个 ID 令牌(它们确实包含不同的值),但我们没有得到返回的刷新令牌。
我看到有关刷新令牌的offline_access 范围的参考,我们是否需要在对 Okta 提供程序的调用中设置它?如果是这样,怎么办?否则,是否有人设法在 NextAuth 中使用 Okta Provider 并修复了过期的访问令牌问题?
{
token: {
name: ...,
email: ...,
picture: .,
sub: ...
},
user: {
id: ..,
name: ...,
email: ...,
image: undefined
},
account: {
provider: 'okta',
type: 'oauth',
providerAccountId: ...,
token_type: 'Bearer', …Run Code Online (Sandbox Code Playgroud) 我在一些继承的遗留代码中遇到了以下方法.感觉它应该可以用简单的" return DateTime.Now " 替换.然而,似乎很明显,我不想在以下情况下进行更改,因为我错过了此代码的一些隐藏意图.
public static DateTime GetTimeStamp()
{
return new DateTime(DateTime.Now.Ticks);
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是,当实施者错误地认为"DateTime.Now"返回了一个引用而不是一个新实例,但是有人曾经遇到过这个或者知道一个真正的原因它可以用这种方式实现.
我有一个客户列表,我只想返回客户名称(加入姓名和姓氏).可以使用以下Linq轻松完成:
return customers.Select(a => string.Format("{0} {1}", a.Forename, a.Surname).First();
Run Code Online (Sandbox Code Playgroud)
如果我理解正确的话,"选择"只会针对声明所要求的行运行.因此对于上面的代码,而不是选择构建字符串列表并且仅使用第一个字符串(抛弃其他字符串),select语句仅针对第一行运行(由.First()要求)然后终止,因此仅是否为一行构建了字符串(第一行返回).那是对的吗?
显然在.Select()和.First之间放置一个".ToList()"将导致它构建一个字符串列表然后只取第一个,但是上面的Linq可能还有其他任何方式可以做到太多的工作?这是我觉得我应该已经确定答案的事情,但最好确认一下.
只是为了澄清它实际上不是我的数据库而且我没有选择访问权限,我只是通过开发一些已经实现的访问数据库来帮助公司.
无论如何,在他们的一些形式上,表格打开并且运行速度极慢,没有明显的原因.有一种形式需要很长时间才能在每个人的计算机上打开,但是当它存在时运行正常并且有另一种形式在大多数人的计算机上运行正常并且几乎无法使用.
表单上有几个子表单,后台没有运行VBA脚本,可能会导致无限循环,我很难接受想法
我已经关闭了auto namecorrect,并且其中一个人说"记录集无法编辑",因为在其中一个文本框上进行了一些分组,但即使我一直在处理它仍然运行速度很慢
下面的代码将从网站调用,因此在非静态类中具有静态字典对象需要是线程安全的.基本上,代码的目的是封装逻辑并维护perfmon计数器的生命周期,这些计数器存储在CounterContainer的实例中.构造函数被称为传入instanceName.构造函数需要检查是否已定义该instanceName的CounterContainer并将其存储在字典中.如果是这样,它可以(并且必须)使用该实例.如果没有,它会创建CounterContainer的实例,将其存储在字典中,然后使用该实例.要使用的CounterContainer的实例存储在非静态成员中,因此从那时起是线程安全的.
作为静态字典使用的唯一地方是在构造函数中,我觉得在将要访问的时间内锁定字典是安全的吗?这是否会导致以后出现任何无法预料的问题,例如阻塞/死锁?我看不到任何东西,但过去并没有真正需要过多考虑这类事情.
我也考虑过lock(this):但我认为这不会起作用,因为它只会锁定正在创建的PerformanceCounters实例,而不是底层静态字典(所以不会是线程安全的).
namespace ToolKit
{
using System;
using System.Diagnostics;
using System.Collections.Generic;
public class PerformanceCounters : IPerformanceCounters
{
private static Dictionary<string, CounterContainer> _containers = new Dictionary<string, CounterContainer>();
private CounterContainer _instanceContainer;
public PerformanceCounters(string instanceName)
{
if (instanceName == null) throw new ArgumentNullException("instanceName");
if (string.IsNullOrWhiteSpace(instanceName)) throw new ArgumentException("instanceName");
// Is this the best item to lock on?
lock (_containers)
{
if (_containers.ContainsKey(instanceName))
{
_instanceContainer = _containers[instanceName];
return;
}
_instanceContainer = new CounterContainer(instanceName);
_containers.Add(instanceName, _instanceContainer);
}
}
public void Start()
{ …Run Code Online (Sandbox Code Playgroud)