戳戳猫的小窝
更新日志
关于
虽然授权功能基本已经实现了,但是还是存在一些小瑕疵,例如: - 教师用户访问没有权限的页面时会显示404页面 - 教师用户登录后能看到专业管理等选项 - 登录页面有注销字样 现在完善这些功能。 # 添加AccessDenied 在AccountController添加**AccessDenied**动作,代码如下: ``` public IActionResult AccessDenied() { return View(); } ``` 创建AccessDenied视图,代码如下: ``` @{ ViewBag.Title = "没有访问权限"; } <div class="notification is-danger has-text-centered title is-1">没有访问权限</div> ``` 这样,当教师用户尝试访问没有权限的页面时,会提示**没有访问权限**而不是404页面。 # 判断角色类型 在**_ViewImports.cshtml**视图导入文件中引入命名空间Microsoft.AspNetCore.Identity和**StuInfoManaSys.Data**。 代码如下: ``` @using Microsoft.AspNetCore.Identity @using StuInfoManaSys.Data ``` 在_Layout.cshtml布局文件最上面注入SignInManager实例,代码如下: ``` @inject SignInManager<IdentityUser> SignInManager ``` 通过User.IsInRole判断角色类是否为管理员,如果是,则显示管理模块,代码如下: ``` <div class="navbar-menu"> @if (User.IsInRole(UserRole.Admin.ToString())) { <div class="navbar-start"> <a asp-controller="Major" asp-action="Index" class="navbar-item">专业管理</a> <a asp-controller="Grade" asp-action="Index" class="navbar-item">年级管理</a> <a asp-controller="Class" asp-action="Index" class="navbar-item">班级管理</a> <a asp-controller="Student" asp-action="Index" class="navbar-item">学生管理</a> </div> } <div class="navbar-end"> <a asp-controller="Account" asp-action="Logout" class="navbar-item">注销</a> </div> </div> ``` 现在,如果登录教师用户,则不显示4个管理模块。 # 判断用户是否登录 通过`SignInManager.IsSignedIn(User)`可以判断用户是否登录,从而从而隐藏登录页面的注销字样,代码如下: ``` @if (SignInManager.IsSignedIn(User)) { <div class="navbar-end"> <a asp-controller="Account" asp-action="Logout" class="navbar-item">注销</a> </div> } ```
完善授权管理