c# - 注册新用户会覆盖当前用户 session - 为什么?

标签 c# servicestack

我在使用我的应用程序注册新用户时遇到了问题。该行为看起来是设计使然,但我不明白为什么。

我的问题如下(我知道这有点边缘情况):

  • 用户在同一浏览器的两个单独选项卡中浏览到我网站的登录页面。
  • 在第一个选项卡中,用户登录并正确重定向到我的主页。
  • 在第二个选项卡中,用户遵循我的注册逻辑(不需要任何类型的页面刷新,这一切都是通过客户端代码完成的,最终以 jQuery AJAX POST 发送到内置 ServiceStack RegistrationService 的/register 端点)

第二个用户的详细信息会覆盖已登录用户的 UserAuth 记录,而不是创建新用户,并且第一个用户无法再登录。

查看 ServiceStack.ServiceInterface.Auth.RegistrationService 中的代码,此行为似乎 100% 是故意的:

var session = this.GetSession();
var newUserAuth = ToUserAuth(request);
var existingUser = UserAuthRepo.GetUserAuth(session, null);

var registerNewUser = existingUser == null;
var user = registerNewUser
            ? this.UserAuthRepo.CreateUserAuth(newUserAuth, request.Password)
            : this.UserAuthRepo.UpdateUserAuth(existingUser, newUserAuth, request.Password);

一旦第一个用户登录,该用户的 session cookie 将与注册请求一起发送,导致上面代码中的 existingUser 变量被该用户的 UserAuth 填充,然后用注册用户更新详情。

谁能解释一下为什么要这样写代码?如果不使用我自己的实现替换 RegistrationService,是否有任何解决方法?

最佳答案

此功能可让您将不同的 Auth Provider 自动合并到 ServiceStack 中的同一帐户中。

关于c# - 注册新用户会覆盖当前用户 session - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405462/

相关文章:

c# - linq 到 xml(c# 到 vb.net 转换)

c# - 使用起始值声明属性的简单语法

c# - 使用 mvc4 Controller 调用 ServiceStack 服务时出错

c# - 服务栈 : Resolve Request DTO from an url

c# - 在同一解决方案中使用多个版本的 ServiceStack 程序集时出现运行时错误

c# - asp.net datalist 数据绑定(bind)

c# - 根据角色隐藏/显示 gridview 列

c# - 像 map 一样的谷歌地图

c# - Swagger 和 ServiceStack 4.0

c# - 是否可以或有必要设置ServiceStack客户端删除请求的内容类型?