在ASP.NET Core中,身份验证和个人资料数据可以通过使用ASP.NET Core Identity和Entity Framework Core来实现。
下面是一个示例解决方案,包含代码示例:
创建一个新的ASP.NET Core Web应用程序项目。
在Startup.cs文件中,将以下代码添加到ConfigureServices方法中,以配置身份验证和个人资料数据:
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.Configure(options =>
{
// 配置密码要求
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = false;
// 配置锁定设置
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
// 配置用户设置
options.User.RequireUniqueEmail = true;
});
services.ConfigureApplicationCookie(options =>
{
// 配置Cookie设置
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
options.LoginPath = "/Account/Login"; // 登录页面的路径
options.LogoutPath = "/Account/Logout"; // 登出页面的路径
options.AccessDeniedPath = "/Account/AccessDenied"; // 拒绝访问页面的路径
options.SlidingExpiration = true;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
}
app.UseAuthentication();
app.UseMvc();
public class ApplicationUser : IdentityUser
{
// 自定义用户属性
}
[Authorize]
public class HomeController : Controller
{
// 只有已登录用户才能访问此操作
public IActionResult Index()
{
return View();
}
}
public class AccountController : Controller
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public AccountController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
public async Task Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return View(model);
}
}
return View(model);
}
public async Task Logout()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Home");
}
}
这些示例代码可以帮助你开始使用ASP.NET Core身份验证和个人资料数据。你可以根据自己的需求进行修改和扩展。