【发布时间】:2021-04-22 10:21:51
【问题描述】:
我正在创建 API 并使其与 SQL Server 连接。
我刚刚为我的应用程序完成了注册用户 API,它运行良好。
已在数据库中创建用户。
当我为用户开发 GET API 时,我发现即使我有很多在线教程也很难做到。
我主要关注源码here。
控制器/UserController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CCCC_server.Authentication;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
namespace CCCC_server.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
private readonly IConfiguration _configuration;
public UsersController(IConfiguration configuration)
{
_configuration = configuration;
}
[HttpGet]
// How to start from here in order to get all register user?
}
}
控制器/AuthenticationController.cs
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using CCCC_server.Authentication;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
namespace CCCC_server.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AuthenticationController : ControllerBase
{
private readonly UserManager<ApplicationUser> userManager;
private readonly IConfiguration _configuration;
public AuthenticationController(UserManager<ApplicationUser> userManager, IConfiguration configuration)
{
this.userManager = userManager;
_configuration = configuration;
}
[HttpPost]
[Route("Register")]
public async Task<IActionResult> Register([FromBody] RegisterModel model)
{
var userExist = await userManager.FindByNameAsync(model.UserName);
if (userExist != null)
return StatusCode(StatusCodes.Status500InternalServerError, new Response { Status = "Error", Message = " User Already Exist" });
ApplicationUser user = new ApplicationUser
{
Email = model.Email,
SecurityStamp = Guid.NewGuid().ToString(),
UserName = model.UserName
};
var result = await userManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
return StatusCode(StatusCodes.Status500InternalServerError, new Response { Status = "Error", Message = "Failed to register new user" });
return Ok(new Response { Status = "Success", Message = "User Created Successfully" });
}
return Unauthorized();
}
}
}
身份验证/RegisterModel.cs
using System;
using System.ComponentModel.DataAnnotations;
namespace CCCC_server.Authentication
{
public class RegisterModel
{
[Required(ErrorMessage = "Username is required")]
public string UserName { get; set; }
[Required(ErrorMessage = "Email is required")]
public string Email { get; set; }
[Required(ErrorMessage = "Password is required")]
public string Password { get; set; }
}
}
【问题讨论】:
-
您需要登录还是只使用网络凭据?该代码使用角色:github.com/mhassan90/AspCoreAPI/blob/master/TestAspCore/…。有关更多信息,请参见 msdn:docs.microsoft.com/en-us/aspnet/web-forms/overview/…
标签: c# .net sql-server asp.net-core