MVC5_学习笔记_2_Authorize
| 1. 新建一个项目,选择MVC程序,选择Individual UserAccounts |
| 2. 在_Layout中插入了一个@Html.Partial("_LoginPartial") |
| 3. 在_LoginPartial中通过Request.IsAuthenticated判断是否已登录, |
| 若为true通过User.Identity.GetUserName()显示用户名 |
| 若为False则显示登录和注册 |
| <ul class="nav navbar-nav navbar-right"> |
| <li>@Html.ActionLink("注册", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li> |
| <li>@Html.ActionLink("登录", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li> |
| </ul> |
Authorize_Identity
| 1. 在 HomeController上插入[Authorize]表示HomeController需要登录权限才能访问 |
| 2. 若在Action插入[Authorize]则表示当前Action需要登录才能访问 |
| 3. 若插入[Authorize(Roles="Admin")] 表示拥有"Admin"权限的用户才可以访问 |
| 4. 若插入[Authorize(User="Jack,Kate")] 表示只有Jack或Kate的才可以访问 |
| 5. 若插入[AllowAnonymous]表示允许匿名访问 |
| 6. 若原本已通过CodeFirst生成数据库,之后修改了数据库连接串中的数据库名,重新运行会生存新的数据库,此时需要先关闭VS,并到项目文件夹中删除数据库文件,在运行程序会报错说找不到数据库,这时就需要在View-Sql Server Object Explorer中卸载该数据库,在重新运行即可 |
创建用户并添加用户权限
| 1. 微软通过UserManager类进行用户管理(默认为管理ApplicationUser类,该类继承自IdentityUser)通过RoleManager(默认为管理ApplicationRole类,继承自IdentityRole)类进行权限管理,在Manager和DbContext通过一个Store进行交换数据,类似一个三层架构,需要一个 |
| ```UserManager:var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); |
| RoleManager:var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));``` |
| 2. 如需要对用户进行扩展,可以直接写在ApplicationUser类中添加需要的属性 |
| 3. 对一个新的用户进行权限管理: |
| 1. 先创建一个容器 var userStore = new UserStore<ApplicationUser>(ApplicationDbContext()) ; |
| 2. 创建一个管理实例 var userManager = UserManager<ApplicationUser>(userStore); |
| 3. 生成一个用户 var user = ApplicationUser { UserName= "Jack" , EMail = "Jack@Test.com" }; |
| 4. 通过userManager创建用户 userManager.Create(user,"password"); |
| 5. 创建一个权限管理 步骤和创建用户一样 通过创建一个容器 讲容器放入权限管理对象中 |
| 6. var roleStore = new RoleStore<IdentityRole>(ApplicationDbContext()); |
| 7. var roleManager = new RoleManager<IdentityRole> |
| 8. 通过roleManager创建一个新的用户权限 roleManager.Create(new IdentityRole( Name = { "Admin" })); |
| 9. 最后通过userManager给用户赋权限 userManager.AddToRole(user.Id,"Admin"); |
| 10. 用户权限就复制完毕,只需通过不同的[Authorize]标签来限制不同身份或用户所做的事即可 |
微软生成权限关系
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构