IdentityServer4 和 SPA 应用和新用户注册

IdentityServer4 and SPA Applications and New User Registration

处理 SPA (Angular) 应用程序的新用户注册的正确方法是什么?我正在使用 IdentityServer 4 对我的 API 进行身份验证(代码流)和授权,并且运行良好。但是,我不确定新用户注册应该在哪里进行,特别是我希望新用户在注册后自动登录,换句话说,我不希望他们在注册后必须转到登录屏幕。注册应该在 SPA 应用程序中处理还是在 IdentityServer 中的特殊视图中处理?无论哪种情况,我之后如何获取 JWT 令牌以允许访问我的 API?

提前致谢。

您希望在 Identity Server 项目中处理注册。您可以向 AccountController.cs class 添加两个新方法,这将类似于 class 中的 Login* 方法,一个用于加载页面,另一个用于处理注册输入.

假设您使用 Microsoft Identity 管理用户帐户,您可以让您的注册端点从注册页面获取信息,在数据库中创建身份,然后调用登录端点调用的相同登录方法。类似于此

// Do model validation, verify the user doesn't already exist, etc...
...
var createUser = await _userManager.CreateAsync(new ApplicationUser
    {
        Email = model.UserName,
        NormalizedEmail = model.UserName,
        UserName = model.UserName,
        FirstName = model.FirstName,
        LastName = model.LastName
    }, model.Password);
var user = await _userManager.FindByEmailAsync(model.UserName);
if (createUser.Succeeded)
{
    // Add roles to the user
    await _userManager.AddToRoleAsync(user, "Customer");
    var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, false, lockoutOnFailure: false);
...
// You'll want to redirect back to the client site to complete the login process