首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心标识-无效令牌(Linux)

ASP.NET核心标识-无效令牌(Linux)
EN

Stack Overflow用户
提问于 2017-04-13 22:53:23
回答 1查看 687关注 0票数 3

我正在使用最新的.NET核心(1.1)和EF核心来构建我的ASP.NET网站,我也使用ASP.NET身份,我已经向Azure主机发布了我的网站,一切都在按预期进行(包括我的Windows )。然而,现在我用Apache切换到我自己的Linux(Centos 7)专用服务器,而且我的站点可以工作,但是当我试图重置密码或确认电子邮件时,我会收到“无效令牌”消息。

我已经检查了其他类似的问题,解决方案是通过电子邮件发送的编码/解码url,但是我已经这样做了,但它仍然不起作用。

我还尝试将整个数据库从本地主机复制到我的服务器上,以防Linux主机上有迁移,但这也没有帮助。所有迁移都会被应用,其他不使用身份上下文的东西也能工作。

经过额外的搜索后,我发现主机上的不同机器键可能有问题,并且安全性标记不同步,但我不认为这会影响到我,因为我将我的应用程序的一个全新版本部署到服务器上,而在本地主机上,一切都在Azure主机上工作。同样,这也是ASP.NET MVC的问题所在,而不是Core。

我如何调试这个问题?我从未见过有人在新的EF Core上有这个问题,尤其是在Linux主机上。

我使用最新的VS 17部署这个站点。我在官方的.NET核心网站:链接上设置了Apache

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 12:08:08

默认情况下,Dotnet核心MVC应用程序保存在cookie中加密的身份验证令牌。

数据加密/解密的种子/密钥是基于机器密钥的,这在每台机器上都是不同的。

如果您运行多个应用程序实例(负载平衡),则当系统试图解密在另一台计算机上创建的会话cookie时,将发生此消息/错误。

另一方面,如果浏览器中仍然有cookie信息,并且开始在另一个主机上托管网站,这个新主机将无法解密这些已经存在的会话cookie。

我知道这是因为我也有同样的问题。您可以在这里找到会话的源代码:https://github.com/aspnet/Session/tree/dev/src/Microsoft.AspNetCore.Session

当dotnet还没有发布时,我尝试了这一点,最后我使用了这个博客。但现在可能已经很过时了。

我建议您使用外部会话存储,而不是使用cookie作为数据存储。阅读他们关于如何设置的文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/app-state

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43402903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档