在本文中,将探讨如何使用ASP.NET Core Identity实现用户认证功能。这包括设置Web项目、身份数据库、用户注册、登录、登出以及支持JWTToken和OAuth 2.0认证。
首先,需要在ConfigureServices
方法中添加MVC,以便在应用程序中使用。
在Startup
类中的Configure
方法用于配置应用程序的中间件。当前代码直接写入"Hello World"响应。将移除它并添加MVC,以处理请求。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
以上代码展示了如何配置服务和中间件以支持MVC和身份认证。
接下来,将创建两个视图模型,用于注册和登录页面。
public class LoginViewModel
{
// 登录视图模型属性
}
public class RegisterViewModel
{
// 注册视图模型属性
}
视图模型用于在视图和控制器之间传递数据。
将创建两个控制器:AccountController
和HomeController
。
[Authorize]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
[Authorize]
public class AccountController : Controller
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public AccountController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpGet]
[AllowAnonymous]
public async Task Login(string returnUrl = null)
{
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task Login(LoginViewModel model, string returnUrl = null)
{
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Logout()
{
}
[HttpGet]
[AllowAnonymous]
public IActionResult Register(string returnUrl = null)
{
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task Register(RegisterViewModel model, string returnUrl = null)
{
}
}
控制器负责处理用户的注册、登录和登出请求。
视图位于Views
文件夹中。这些视图是标准的MVC视图,不会过多解释。
如果运行应用程序,它将转到登录页面,因为没有用户登录。