IdentityServer4中注册后自动登录用户

3
我们的注册流程是一个 Angular2 应用,它调用了一个 .NET Core API。在注册后,我们希望自动登录用户到 Identityserver4,而不是简单地将用户重定向到登录页面,这样用户还需要重新输入用户名/密码。
有没有其他人已经成功实现了这个功能?大部分其他解决方案似乎都是使用 Identityserver3 实现的。

2
除了易用性之外,你为什么要这样做?在让用户进入系统之前,我想确保他们输入的电子邮件地址确实属于他们自己,原因有很多:凭据可能会被发送到错误的地址(打字错误),并在注册完成后被攻击,或者有人可以使用不属于他们的地址来骚扰别人,或者由于地址中的打字错误而无法进行密码重置,等等。 - rickvdbosch
1
@RickvandenBosch 有些系统对已验证的电子邮件帐户并不太在意。例如,Reddit在注册后会自动登录您。而Reddit作为其业务要求的一部分,认为这种入门障碍对于他们的产品更好,而不是要求人们验证他们的电子邮件。这取决于您的用例。简而言之,在您的领域中,有效电子邮件有多重要,与您有多想要低摩擦的注册流程?我猜这个权衡可能会引导OP在某种程度上采取这种方式。 - Lutando
3
@RickvandenBosch 说得对,但是注册过程实际上是分多个步骤进行的。此时用户已经确认了电子邮件地址。 - Henrik Gabrielsson
1个回答

1
你所需要做的就是在负责用户注册的控制器中的注册操作中登录用户。换句话说,你可以使用以下方法来处理你的注册控制器方法,就像处理登录控制器方法一样:
await HttpContext.Authentication.SignInAsync()

这个方法主要是为了准备HttpContext,当你从中返回适当的IActionResult时,它会向你的浏览器发出一个cookie。我相信你已经看到过this或类似的东西。在注册方法中做同样的事情即可。

谢谢你的回答!你确定这可以在客户端应用程序中完成,而不仅仅是在identityServer中吗? - Henrik Gabrielsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接