gpt4 book ai didi

带有外部登录链接的 RedisSessionStateProvider.cs

转载 作者:IT王子 更新时间:2023-10-29 06:14:57 26 4
gpt4 key购买 nike

我正在开发一个 ASP.NET MVC 应用程序 (targetFramework 4.5),它允许用户使用自定义身份验证以及使用他们的 Twitter 帐户登录站点。以下库已被引用

  1. 微软.Owin
  2. Microsoft.Owin.Host.Security
  3. Microsoft.Owin.Security
  4. Microsoft.Owin.Security.Cookies
  5. Microsoft.Owin.Security.MicrosoftAccount
  6. Microsoft.Owin.Security.OAuth 和
  7. Microsoft.Owin.Security.Twitter

当我在我的网页中单击 Twitter 按钮时,它会转到 Twitter 站点,获取我的凭据并返回到我的站点。这里没有问题。

我现在正在集成 RedisSessionStateProvider.cs 以使用 Redis 管理 session 。我已经添加了提供者文件 (RedisSessionStateProvider.cs) 并且我已经更新了 web.config 文件如下:

<sessionState cookieless="false" customProvider="RedisSessionStateProvider" mode="Custom" timeout="20">
<providers>
<add name="RedisSessionStateProvider" port="6379" server="localhost" type="RedisProvider.SessionProvider.CustomServiceProvider" writeexceptionstoeventlog="true" />
</providers>
</sessionState>

Redis 服务器正在运行并监听端口 6379。现在,如果我单击 Twitter 按钮,该站点会将我带到 twitter 身份验证页面,并且在从 twitter 成功身份验证后,当回调方法时

公共(public)异步任务 ExternalLoginCallback(string returnUrl)

被解雇了,代码

等待 AuthenticationManager.GetExternalLoginInfoAsync();

正在返回 null。

如果我从配置文件中注释掉 sessionstate 节点,一切正常,即 GetExternalLoginInfoAsync() 正确返回 loginInfo。

我无法确定此问题的根本原因。谁能指导我解决这个问题?

谢谢,赫曼特。

最佳答案

我有同样的问题。我认为 RedisSessionStateProvider 实现中存在错误。现在,我有一个临时解决方案:

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
// TODO: RedisSessionState provider will not works if remove it.
Session["hook-init-redis"] = DateTime.Now.ToString();

ViewBag.ReturnUrl = returnUrl;
return View();
}

因此,您应该在调用外部登录之前向 Session 写入内容。

关于带有外部登录链接的 RedisSessionStateProvider.cs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26101749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com