zoukankan      html  css  js  c++  java
  • 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

    老师讲的视频:百度一下

  • 相关阅读:
    linux JAVA JDK环境配置
    逍遥语录
    php常用函数集
    使用uGUI系统玩转标准俄罗斯方块
    Unity3D中uGUI事件系统简述及使用方法总结
    JAVA笔记-如何将百万级数据高效的导出到Excel表单
    简单的异步Socket实现——SimpleSocket_V1.1
    Netty4.x中文教程系列(六) 从头开始Bootstrap
    Unity3D中简单的C#异步Socket实现
    基于Spring框架的简单多数据源切换解决办法
  • 原文地址:https://www.cnblogs.com/9999w/p/4358904.html
Copyright © 2011-2022 走看看