使用.net自动生成的登录界面,并添加身份

您所在的位置:网站首页 GSA数据库生成链接的时间 使用.net自动生成的登录界面,并添加身份

使用.net自动生成的登录界面,并添加身份

2023-06-13 14:26| 来源: 网络整理| 查看: 265

文章目录 前言一、将登录界面弄出来1.添加新的项目2.选择标识3.根据需求,选择相应的界面,这里我就选择登录和注册 二、添加身份1.在SeedData里去添加身份2。置顶语句里调用 三、在新建用户的时候给用户身份1.在Register.cshtml.cs里添加用户身份 四、写用户管理界面1.在model里面添加用户信息2.写查界面3.写改界面4.在Controllers中连接数据库5.效果图

前言

使用.net core mvc 的时候要给用户身份时,发现网上没有比较基础的教程。这里我已经使用了Identity里的个人身份验证,vs会自动生成一个登录界面,对于我们这种初学者来说要修改需要一定的时间,希望这篇文章可以给你帮助

一、将登录界面弄出来

因为.net使用了ids4,所以好多东西是已经封装好的,这样子我们就不太容易修改。

1.添加新的项目

在这里插入图片描述

2.选择标识

在这里插入图片描述

3.根据需求,选择相应的界面,这里我就选择登录和注册

在这里插入图片描述

二、添加身份 1.在SeedData里去添加身份 public static async Task InitializeAsync( IServiceProvider services) { var roleManager = services .GetRequiredService(); await EnsureRolesAsync(roleManager); var roleManager1 = services .GetRequiredService(); await RegularUserAsync(roleManager1); var userManager = services .GetRequiredService(); await EnsureTestAdminAsync(userManager); } /// /// 添加超级用户 /// /// /// private static async Task EnsureRolesAsync( RoleManager roleManager) { var alreadyExists = await roleManager .RoleExistsAsync(Models.Constants.AdministratorRole); if (alreadyExists) return; await roleManager.CreateAsync( new IdentityRole(Models.Constants.AdministratorRole)); } /// /// 添加普通用户 /// /// /// private static async Task RegularUserAsync( RoleManager roleManager) { var alreadyExists = await roleManager .RoleExistsAsync(Models.Constants.RegularUsers); if (alreadyExists) return; await roleManager.CreateAsync( new IdentityRole(Models.Constants.RegularUsers)); } /// /// 添加超级管理员的用户 /// /// /// private static async Task EnsureTestAdminAsync( UserManager userManager) { var testAdmin = await userManager.Users .Where(x => x.UserName == "[email protected]") .SingleOrDefaultAsync(); if (testAdmin != null) return; testAdmin = new IdentityUser { UserName = "[email protected]", Email = "[email protected]", EmailConfirmed = true }; await userManager.CreateAsync( testAdmin, "NotSecure123!!"); await userManager.AddToRoleAsync( testAdmin, Models.Constants.AdministratorRole); } 2。置顶语句里调用 using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; try { SeedData.InitializeAsync(services).Wait(); } catch (Exception ex) { var logger = services .GetRequiredService(); logger.LogError(ex, "Error occurred seeding the DB."); } } 三、在新建用户的时候给用户身份 1.在Register.cshtml.cs里添加用户身份 //放在大约123行 await _userManager.AddToRoleAsync( user, Models.Constants.RegularUsers); 四、写用户管理界面 1.在model里面添加用户信息 using Microsoft.AspNetCore.Identity; using System.ComponentModel.DataAnnotations; namespace web_net.Models { /// /// 用户身份 /// public class ManageUsersViewMode { public IdentityUser[] Administrators { get; set; } [Display(Name = "普通用户")] public IdentityUser[] RegularUsers { get; set; } public IdentityUser[] AnchorUsers { get; set; } public IdentityUser[] Everyone { get; set; } } /// /// 用户信息 /// public class Users { public IdentityUser user { get; set; } public string identity { get; set; } } /// /// 建立身份时所需的字符串 /// public static class Constants { public const string AdministratorRole = "Administrator"; public const string RegularUsers = "RegularUsers"; public const string AnchorUsers = "AnchorUsers"; } } 2.写查界面 @model ManageUsersViewMode @{ ViewData["Title"] = "Manage users"; Layout = "~/Views/Shared/AdminLTE/_Layout.cshtml"; } @ViewData["Title"] Id Email identity @foreach (var user in Model.Administrators) { @user.Id @user.Email Administrators Edit } @foreach (var user in Model.RegularUsers) { @user.Id @user.Email RegularUsers Edit } Everyone Id Email @foreach (var user in Model.Everyone) { @user.Id @user.Email Edit } 3.写改界面 @model Users @* For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 *@ @{ } Edit Rucksacks Back to List @section Scripts { @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } } 4.在Controllers中连接数据库 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using web_net.Models; using System.Data; using Microsoft.AspNetCore.Mvc.Rendering; namespace web_net.Controllers { [Authorize(Roles = "Administrator")] public class ManageUsersController : Controller { private readonly UserManager _userManager; private readonly RoleManager _roleManage; public ManageUsersController( UserManager userManager, RoleManager roleManage) { _userManager = userManager; _roleManage = roleManage; } public async Task Index() { var admins = (await _userManager .GetUsersInRoleAsync("Administrator")) .ToArray(); var regularusers = (await _userManager .GetUsersInRoleAsync("RegularUsers")) .ToArray(); var AnchorUsers = (await _userManager .GetUsersInRoleAsync("AnchorUsers")) .ToArray(); var everyone = await _userManager.Users .ToArrayAsync(); var model = new ManageUsersViewMode { Administrators = admins, Everyone = everyone, RegularUsers = regularusers, AnchorUsers = AnchorUsers }; return View(model); } public async Task Edit(string id) { var getuser = (await _userManager .FindByIdAsync(id) ); var identity = (await _userManager .GetRolesAsync(getuser) ); var model = new Users { user = getuser, identity = identity[0] }; ViewData["identityid"] = new SelectList(_roleManage.Roles, "Name", "Name", await _roleManage.Roles.ToArrayAsync()); return View(model); } [HttpPost] public async Task Edit(string id, [Bind("user", "identity")] Users users) { var getuser = (await _userManager .FindByIdAsync(id) ); var identity = (await _userManager .GetRolesAsync(getuser) ); try { await _userManager.RemoveFromRoleAsync(getuser, identity[0]); await _userManager.AddToRoleAsync(getuser, users.identity); } catch (Exception ex) { } var model = new Users { user = getuser, identity = identity[0] }; ViewData["identityid"] = new SelectList(_roleManage.Roles, "Name", "Name", await _roleManage.Roles.ToArrayAsync()); return View(model); } } } 5.效果图

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3