目前用户管理的增删改查及登录功能已经全部实现,但存在一个问题,登录后要取消登录按钮显示退出按钮,未登录应该有注册按钮,现实现过程如下

一、Startup.cs中增加服务

app.UseAuthentication();

二、修改用户管理主页

注入服务

@inject SignInManager<IdentityUser> SignInManager

修改视图代码,判断当前用户是否登录

@if (SignInManager.IsSignedIn(User)) { <form asp-action="Logout" method="post" id="logoutForm"> <a href="javascript:document.getElementById('logoutForm').submit()">退出</a> </form> } else { <a asp-action="Register">注册</a> <a asp-action="Login">登录</a> }

登录及未登录显示效果

修改后完整代码

@using Microsoft.AspNetCore.Identity
@model IEnumerable<Microsoft.AspNetCore.Identity.IdentityUser>
@inject SignInManager<IdentityUser> SignInManager
@{
ViewData["Title"] = "Index";
} <h1>Index</h1>
<h1>@ViewData["User"]</h1>
@if (SignInManager.IsSignedIn(User))
{
<form asp-action="Logout" method="post" id="logoutForm">
<a href="javascript:document.getElementById('logoutForm').submit()">退出</a>
</form>
}
else
{
<a asp-action="Register">注册</a>
<a asp-action="Login">登录</a>
}
<table class="table table-bordered">
<tr>
<th>@Html.DisplayNameFor(u => u.Id)</th>
<th>@Html.DisplayNameFor(u => u.UserName)</th>
<th>@Html.DisplayNameFor(u => u.Email)</th>
<th>@Html.DisplayNameFor(u => u.PhoneNumber)</th>
<th>操作</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.UserName</td>
<td>@item.Email</td>
<td>@item.PhoneNumber</td>
<td>
<a asp-action="EditUser" asp-route-id="@item.Id" type="button" class="btn btn-success btn-xs">修改</a>
<a asp-action="Delete" asp-route-id="@item.Id" type="button" class="btn btn-danger btn-xs" size="">删除</a>
</td>
</tr>
}
</table>

也可以把用户列表中加上如果没有登录不显示编辑、删除按钮

@using Microsoft.AspNetCore.Identity
@model IEnumerable<IdentityUser>
@inject SignInManager<IdentityUser> SignInManager
@{
ViewData["Title"] = "Index";
} <h1>Index</h1> @if (SignInManager.IsSignedIn(User))
{
<form asp-action="Logout" method="post" id="logoutForm">
<a href="javascript:document.getElementById('logoutForm').submit()">退出</a>
</form>
}
else
{
<a asp-action="Register">注册</a>
<a asp-action="Login">登录</a>
}
<table class="table table-bordered">
<tr>
<th>@Html.DisplayNameFor(u => u.Id)</th>
<th>@Html.DisplayNameFor(u => u.UserName)</th>
<th>@Html.DisplayNameFor(u => u.Email)</th>
<th>@Html.DisplayNameFor(u => u.PhoneNumber)</th>
@if (SignInManager.IsSignedIn(User))
{
<th>操作</th>
}
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.UserName</td>
<td>@item.Email</td>
<td>@item.PhoneNumber</td>
@if (SignInManager.IsSignedIn(User))
{
<td>
<a asp-action="EditUser" asp-route-id="@item.Id" type="button" class="btn btn-success btn-sm ">修改</a>
<a asp-action="Delete" asp-route-id="@item.Id" type="button" class="btn btn-danger btn-sm">删除</a>
</td>
}
</tr>
}
</table>

修改后的视图

未登录

登录后显示

熟悉工作流程后上述代码可直接使用新建asp.net core项目中的个人验证,自动配置好以上基础框架

Identity用户管理入门六(判断是否登录)的更多相关文章

  1. Identity用户管理入门二(显示用户列表)

    在Controllers中新建AccountController,并在构造方法(函数)中注入SignInManager,UserManager UserManager   用户管理(注册,查找,修改, ...

  2. Identity用户管理入门五(登录、注销)

    一.建立LoginViewModel视图模型 using System.ComponentModel.DataAnnotations; namespace Shop.ViewModel { publi ...

  3. Identity用户管理入门七(扩展用户字段)

    在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...

  4. Identity用户管理入门三(注册用户)

    用户注册主要有2个方法,1.密码加密 2.用户注册 3.ASP.NET Core Identity 使用密码策略.锁定和 cookie 配置等设置的默认值. 可以在类中重写这些设置 Startup(官 ...

  5. Identity用户管理入门一(框架搭建)

    理论知识微软官方文档最完整,最详细,这里只一步步的介绍如何使用,地址:https://docs.microsoft.com/zh-cn/aspnet/core/security/authenticat ...

  6. Identity用户管理入门四(修改、删除用户)

    修改用户不能修改Id及用户名所以创建视图模型时需要去除,新增用户跟修改用户基本视图一直,所以不再做演示 一.新建UpdateUserViewModel视图模型 using System.Compone ...

  7. oracle用户管理入门

    1.创建一个新用户(普通) create user 用户名 identified by 密码 示例,创建一个名叫小明的用户,密码为xm 2.以管理员的身份给普通用户修改密码(当普通用户忘掉自己的密码时 ...

  8. RDIFramework.NET ━ 9.3 用户管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.3  用户管理 -Web部分 用户管理模块主要是对可登录系统的用户进行管理.后续的工作如:用户归属角色.权限的分配.用户所拥有 ...

  9. sybase用户管理(创建、授权、删除)

    一.登录用户管理:1.创建用户:sp_addlogin loginame, passwd [, defdb] [, deflanguage] [, fullname] [, passwdexp] [, ...

随机推荐

  1. 洛谷P1377题解

    题面 首先他叫我们建一颗笛卡尔树,所以我们就建一颗笛卡尔树. 然后他说要生成序列中最小的.想到笛卡尔树的一条性质:左<根<右.但是根节点必须先插进去.他的两个儿子用贪心的思想就知道是先选左 ...

  2. xubuntu共享打印机

    by 无若 1.查看系统中的打印机lpstat -ssystem default destination: HP-Color-LaserJet-CP1215device for HP-Color-La ...

  3. spring学习07(整合MyBatis)

    10.整合MyBatis 10.1 相关jar包 junit <dependency> <groupId>junit</groupId> <artifactI ...

  4. MySQL-12-innodb引擎补充

    innodb引擎保证事务的ACID 概念 redo log ---> 重做日志 ib_logfile0~1 50M 轮询使用 redo log buffer ---> redo内存区域 i ...

  5. HDFS 09 - HDFS NameNode 的高可用机制

    目录 1 - 为什么要高可用 2 - NameNode 的高可用发展史 3 - HDFS 的高可用架构 3.1 Standby 和 Active 的命名空间保持一致 3.2 同一时刻只有一个 Acti ...

  6. Linux学习手册

    入门概述 Linux 简介 Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一套免费使用和自由传播的类 Unix ...

  7. 第一次上传代码到gitee

    初始化 git init 添加文件到本地仓库 git add . 提交文件到本地仓库 git remote add origin 仓库地址 拉去远程仓库代码 git pull origin maste ...

  8. 源码安装nginx开启SSL功能

    编译安装nginx的环境 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 下载nginx安装包 cd /usr/ ...

  9. 物联网协议Coap协议介绍

    COAP协议简介 Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252.COAP名字翻译来就是" ...

  10. Socket编程 Tcp和粘包

    大多数程序员都要接触网络编程,Web开发天天和http打交道.稍微底层一点的程序员,就是TCP/UDP . 对程序员来说,Tcp/udp的核心是Socket编程. 我的浅薄的观点---------理解 ...