• Membership角色与权限管理


    安全性:成员资格与角色;验证与授权。
    一、建数据库:在VS工具中用DOS环境执行ASPNET_REGSQL
    二、配置程序访问数据库:
    1> 在web.config之中加入
      <connectionStrings>
        <add name="puzi" connectionString="server=LENOVO-PC;database=LaoChe;uid=sa;pwd=1234"/>
      </connectionStrings>        //其中的"puzi"是自己起的名字
      
    2: 在 <membership> 节中可以添加多个作为 <providers> 节的子元素。
         defaultProvider 特性非常重要,这个特性指定你的应用程序将使用的成员资格提供程序。
    
         在web.config中的<system.web>下面加上
     <membership defaultProvider="AspNetSqlMembershipProvider"  userIsOnlineTimeWindow="15" hashAlgorithmType="">
        --defaultProvider :提供程序的名称。默认为 AspNetSqlMembershipProvider。
                            如果你有多个Provider的话,指定一个默认值是明智的做法
        --userIsOnlineTimeWindow :指定用户在最近一次活动的日期/时间戳之后被视为联机的分钟数。
        --hashAlgorithmType :用于哈希密码的算法的标识符,或为空以使用默认哈希算法。
         
              <providers>
             <add 
             name="AspNetSqlMembershipProvider"
              type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  
               --当然上面那一句也可以使用下面这一句来代替
              type="System.Web.Security.SqlMembershipProvider" 
    
              
              
              connectionStringName="puzi"           --这里写上面的数据库名字,puzi
              enablePasswordRetrieval="false"        --是否允许密码找回,等于false时是不许,等于加密
                                                    如果为 true,通过 MembershipUser.GetPassword() 可以取回密码。
                                                    当然,这只有在密码没有被散列化的情况下才起作用
              enablePasswordReset="true"            --是否需要密码重置
              requiresQuestionAndAnswer="false"      --是否需要必须的问题和答案指定程序是否启用密码问题功能。用户忘记密码后并正确回答了问题,他可以通过 Email 重新获得一个自动生成的密码
              requiresUniqueEmail="false"           --是否需要验证的邮箱
              maxInvalidPasswordAttempts="5"        --最大的密码重试次数,超过之后便会锁定,即使输入正确的也打不开,默认值 5 。
              minRequiredPasswordLength="6"         --最小的密码长度
              minRequiredNonalphanumericCharacters="0" --密码的怪字符个数是0,指定密码必需含有的非字母数字字符的个数。重要
              passwordAttemptWindow="10"         -- 设置以分钟计的时间。在这段时间内可以尝试多次无效密码或者密码回答,
                                                   时间一过,用户立即被锁定。默认值 10 分钟。管理员必须再次激活这个账号
              applicationName="/"                   --applicationName :应用程序的名称。
                                        applicationName 属性要特别注意。实际上,成员资格数据库里的所有对象都和一个应用程序相关联。
                                        如果没有在成员资格配置里指定 applicationName,API 或 WAT 会把这些对象通过名称“/”关联到根应用程序。
              
                passwordFormat :指示在成员资格数据存储区中存储密码的格式。值可选Clear、Encrypted 和 Hashed。
                                  Clear: 密码以明文形式存储,这可以提高存储和检索密码的性能,但安全性较差,
                                          当数据源安全性受到威胁时此类密码很容易被读取。
                                 Encrypted: 密码在存储时进行了加密,可以在比较或检索密码时进行解密。
                                             此类密码在存储和检索时需要进行额外的处理,但比较安全,在数据源的安全性受到威胁时不容易被获取。
                                 Hashed :密码在存储到数据库时使用单向哈希算法和随机生成的 salt 值进行哈希处理。
                                          在验证某一密码时,将用数据库中的 salt 值对该密码进行哈希计算以进行验证。无法检索哈希密码。
    
        passwordStrengthRegularExpression=""       --计算密码的正则表达式。 可以使用正则表达式指定一个有效的密码格式,
                                                                      这就可以非常灵活的指定密码的标准格式了
    
             />
                </providers>
        </membership>
    
      第三部:编写程序,membership类
      1:创建用户:(.CreateUser)
      Membership.CreateUser("姓名","密码","邮箱");
      2:登陆测试:验证用户
      登陆(ValidateUser)
     bool isOk = Membership.ValidateUser("用户名","密码");
     3:修改密码:(.ChangePassword)
     使用MembershipUser对象的实例方法:.ChangePassword
      MembershipUser user= Membership.GetUser(Textyong1.Text);//
         if (user != null)
         {
             user.ChangePassword(Textmiyu.Text,Textmixian.Text);//
         }
    4:获取单用户,获取所有用户
    获取单用户的方法:  
            MembershipUser user = Membership.GetUser(Textming.Text);
    获取所有用户的方法:
             MembershipUserCollection user=Membership.GetAllUsers();
            CheckBoxList1.DataSource = user;
            CheckBoxList1.DataTextField = "UserName";//显示值
            CheckBoxList1.DataValueField = "UserName";//value值
            CheckBoxList1.DataBind();
    5:删除用户:(.DeleteUser)
           // string usename = TextBox1.Text();
            //string usename = CheckBoxList1.SelectedValue;
            string usename = RadioButtonList1.SelectedValue;
            Membership.DeleteUser(usename);
    6:禁用或启用用户(.IsApproved )
         string usename = RadioButtonList1.SelectedValue;
            //
            MembershipUser user = Membership.GetUser(usename);
            //改(这时候还没有送回数据库)
            //启用,设为true,禁用设为false
            user.IsApproved = false;
            //保存送回数据库
            Membership.UpdateUser(user);
    7:解锁与锁定(.UnlockUser)
    人没法直接锁用户,只有在输入错了的时候才能锁定
    解锁:
            string usename = RadioButtonList1.SelectedValue;
            //
            MembershipUser user = Membership.GetUser(usename);
            //解锁
            user.UnlockUser();
    二:角色管理:
    1:获取所有角色:
    string[] roles = Roles.GetAllRoles();
    2:添加角色:
     Roles.CreateRole(Textjuese.Text);//添加角色
     3:删除角色
       Roles.DeleteRole(rolename);//删除角色
    
    三:设置用户角色的对应关系
    Roles.AddUserToRole()
    Roles.AddUserToRoles()
    Roles.AddUsersToRoles()
    Roles.AddUsersToRole()//添加用户
    
    
    Roles.RemoveUsersFromRole//移除用户
    Roles.RemoveUserFromRoles
    Roles.RemoveUserFromRole
    Roles.RemoveUsersFromRoles
    
    Roles.GetUsersInRole();//获取角色中有哪些用户
    
    验证(Authentication)与授权(Authorization)
    验证:有票就进,没票不进(密码)
    授权:检票可以在车上,没检票的下车(有密码之后便可以设置权限,设置权限)
    1.验证:
     <authentication mode="Forms"><!--验证-->
          <forms defaultUrl="DMain.aspx" loginUrl="DLogin.aspx" name="aaa" protection="All"></forms>
        </authentication>
    2:验证:
        <authorization><!--授权-->
          <deny users="?"/><!--deny 拒绝。users="*"既是所有的用户都无法登陆,users="?":匿名用户,不可以登陆-->
       <allow users="*"/>//users="*"允许所有的用户,users="?"允许匿名用户
        </authorization>
    3:代码:
    一:   bool isok = Membership.ValidateUser(Textid.Text,Textpass.Text);
            if (isok)
            {
                //向cookie中写入内容
                //是否建立长久的cookie文件,即是否在文件是否在电脑本地上写cookie文件
                //FormsAuthentication.SetAuthCookie(Textid.Text,false);
               
                //即写cookie又跳页面
                FormsAuthentication.RedirectFromLoginPage(Textid.Text, false);
                //Response.Redirect("DMain.aspx");//最好不要用这种
            }
    
    二:  Label1.Text = this.User.Identity.Name;//登陆进去之后
       注销: FormsAuthentication.SignOut();//注销
              FormsAuthentication.RedirectToLoginPage();//返回登陆页面
    
    三:授权:
    按照文件夹授权:
    在每个文件夹之下新建网站,加配置文件。并在配置文件中加入下面的程序
        <!--不对用户(人名)授权,对角色(财务管理)授权-->
        <authorization>
          <allow roles="政绩管理"/>
          <!--允许所有用户-->
          <deny users="*"/>
          <!--拒绝所有用户-->
        </authorization>

     实例下载地址:百度文库

    解压密码:1111112

     下载说明文库地址:http://pan.baidu.com/s/1qWA0NnA

    老师讲的视频:百度一下

  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/9999w/p/4358904.html
Copyright © 2020-2023  润新知