我是JWT的新手。使用" jsonwebtoken":" ^ 8.2.0",
在我的Web应用程序中,我成功使用JWT进行身份验证。 我可以登录,在本地存储中创建有效的令牌。使用它从服务器收集数据没有问题。
但是第二天访问该页面时出错。
在我的代码中,我将其设置为expiredIn:' 30d'。所以,每次访问网站时我都不需要继续登录。一切正常,令牌作品。 本地存储包含json格式的数据。
public interface INetworkService {
Task<List<MyObject>> GetThingsAsync(string api);
}
public class HttpNetworkService : INetworkService {
private readonly HttpClient Client;
public HttpNetworkService(HttpClient client) {
Client = client;
}
public Task<List<MyObject>> GetThingsAsync(string api) {
var json = await Client.GetStringAsync(api);
return JsonConvert.DeserializeObject<List<MyObject>>(json);
}
}
public class TestNetworkService : INetworkService {
public Task<List<MyObject>> GetThingsAsync(string api) {
return Task.FromResult(new List<MyObject> { /*build out your mock result here*/ });
}
}
public class MyController : Controller {
private readonly INetworkService NetworkService;
public MyController(INetworkService svc) {
NetworkService = svc;
}
public async Task<ActionResult> Index() {
ViewBag.Title = "Home Page";
var tasks = await NetworkService.GetThingsAsync(ConfigurationManager.AppSettings["MyCustomAPI"]);
return View(tasks);
}
}
第二天,我回来了。该网站不要求我登录,但它在控制台上出错,出现错误,用户名未定义。我必须退出并重新登录。然后我得到一个新的令牌工作。但它第二天再次崩溃。
我错过了哪一步?
{
token: long token string,
user: { username: user }
}
它显示4/11的令牌在5/11到期