ASP.NET Core Identity - 帐户控制器和文件夹在哪里

问题描述 投票:0回答:2

我是

.NET Core
新手,想询问
Identity

我买了一本书并遵循了所有说明。按照书上描述的方式设置

Identity
非常简单。 创建帐户控制器、登录、注销视图等...

但是当我使用 Visual Studio 创建一个新项目并选择“个人用户帐户”时。

我找不到帐户控制器文件夹。有一个 Areas 文件夹,但几乎是空的。

Areas\Idnetity\Pages\_ViewStart.html

我检查了隐藏文件等,但找不到

Account
Identity
文件夹。

登录链接是这样的

 https://localhost:44313/Identity/Account/Login

Identity
正在工作,但是代码在哪里?

.net-core asp.net-core-identity
2个回答
4
投票

正如此条目所述:

在 ASP.NET Core 2.1 中,我们现在可以在可重用类中提供 Razor UI 图书馆。我们正在使用此功能来提供整个身份 UI 作为预构建的包(Microsoft.AspNetCore.Identity.UI),您可以 只需从应用程序中引用即可。

请注意,您通过将

.AddDefaultUI(UIFramework.Bootstrap4)
添加到
ConfigureServices
方法来要求此功能有效。

如果您仍然喜欢像以前一样搭建

Identity
,请使用这个
cli
命令:

dotnet aspnet-codegenerator identity --useDefaultUI

有关脚手架选项的更多信息,请访问此处


0
投票

mvc asp.net 中的帐户控制器,具有登录注册注销创建角色

[自动验证防伪令牌] 公共类 AccountController :控制器 { 私有只读 UserManager _userManager; 私有只读 RoleManager _roleManager; 私有只读 SignInManager _signInManager;

    public AccountController(UserManager<AppUser> userManager, SignInManager<AppUser> signInManager, RoleManager<IdentityRole> roleManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
        _roleManager = roleManager;
    }
    public IActionResult Register() { return View(); }

    [HttpPost]
    public async Task<IActionResult> Register(RegisterVm vm)
    {
        if (!vm.Email.Contains("@")) ModelState.AddModelError("Email", "Email formatini duzgwn daxil edin");
        if (!ModelState.IsValid) { return View(vm); }
        AppUser user = new AppUser()
        {
            Name = vm.Name,
            Email = vm.Email,
            Surname = vm.Surname,
            UserName = vm.UserName,
        };
        var result = await _userManager.CreateAsync(user, vm.Password);
        if (!result.Succeeded)
        {
            foreach (var item in result.Errors)
            {
                ModelState.AddModelError("", item.Description);
            }
            return View(vm);
        }
        await _signInManager.SignInAsync(user, isPersistent: false);
        await _userManager.AddToRoleAsync(user, UserRole.Member.ToString());
        return RedirectToAction(nameof(Index), "Home");
    }
    public IActionResult Login() { return View(); }
    [HttpPost]
    public async Task<IActionResult> Login(LoginVm vm, string? returnUrl)
    {
        if (!ModelState.IsValid) { return View(vm); }
        AppUser user = await _userManager.FindByNameAsync(vm.UsernameOrEmail) ?? await _userManager.FindByEmailAsync(vm.UsernameOrEmail);
        if (user == null) { ModelState.AddModelError(string.Empty, "Username/Email or Password incorrect"); return View(); }
        var result = _signInManager.CheckPasswordSignInAsync(user, vm.Password, true).Result;
        if (result.IsLockedOut) { ModelState.AddModelError(string.Empty, "Try again later"); return View(result); }
        if (!result.Succeeded) { ModelState.AddModelError(string.Empty, "Username/Email or Password incorrect"); }
        await _signInManager.SignInAsync(user, vm.RememberMe);
        return (returnUrl is not null && returnUrl.Contains("Login")) ? RedirectToAction(nameof(Index), "Home") : (ActionResult)Redirect(returnUrl);
    }
    public IActionResult Logout() { _signInManager.SignOutAsync(); return RedirectToAction(nameof(Index), "Home"); }
    public async Task<IActionResult> CreateRole()
    {
        foreach (var item in Enum.GetValues(typeof(UserRole)))
        {
            if (await _roleManager.FindByNameAsync(item.ToString()) == null)
            {
                await _roleManager.CreateAsync(new IdentityRole(){ Name = item.ToString()});
            };
        };
        return RedirectToAction(nameof(Index), "Home");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.