zoukankan      html  css  js  c++  java
  • MVC5_学习笔记_2_Authorize

    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]标签来限制不同身份或用户所做的事即可
    

    微软生成权限关系

  • 相关阅读:
    python小技巧之把list组合成chain
    airflow自动生成dag
    python之json读写
    Java写入的常用技巧(二)
    python并发——信号量
    python并发——进程间同步和通信
    python并发——从线程池获取返回值
    python获取hive表时间格式最大分区
    python递归获取目录下指定文件
    国际化(i18n)
  • 原文地址:https://www.cnblogs.com/Jack-Blog/p/4255761.html
Copyright © 2011-2022 走看看