AspNet小结(用户权限)

AspNet 小结

一、主题皮肤

1.  设置页面的主题 Themes 属性

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  Theme="SystemThemes"%>

2.  设置所有页面的主题

theme="SystemThemes"

<system.web>

    <pages theme="SystemThemes">

      <controls>

        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      </controls>

    </pages>

3.  设置不同模块的主题

      <location path="Manager">

           <system.web>

                 <pages theme="OtherThemes"></pages>

                   </system.web>

         </location>

 

      注意path 路径不能有~/ 否则不能使用相应主题

二、 站点授权和用户权限 MemeberShip

 1 验证方式

                                     a) Form

b)Window 用于局域网,验证域名和计算机名

c)Passport 微软为企业设计(一般不用)

                     2.webConfig 配置      

                                     <system.web>下的

                               <authentication mode="Forms" />

                              注意: 如果建的是Ajax 网站是不会默认生成以上代码的

                    3. 网站管理工具

                            A 在项目的解决方案视图中含有一个配置图标点击可打开网站管理工具

                            B 可选择身份验证方式 系统会自动生成对应的库

注意:只有刷新App_Data才可看见生成的库)

                            C 自动生成的表

a)        aspnet_Users 用户表

b)        aspnet_Roles 权限表

c)        aspnet_UsersInRoles 用户权限表

d)        aspnet_Membership 用户的其他信息

 

 

4. 配置文件

         A)

         Machine.config  配置服务器

一般路径,文件路径,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

             设置验证信息格式:

                   membership 节点的所有内容copy webconfigsystem.web 节点下

                       <membership>

      <providers>

        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer"//连接字符串的名称

enablePasswordRetrieval="false" //密码是否支持找回

enablePasswordReset="true" //密码是否支持重置

requiresQuestionAndAnswer="true" //用户是否需要输入提示问题

//若设为true 可将注册控件的相关输入框去掉(需先变为可编辑的控件)

applicationName="/"  登陆页面的作用域

requiresUniqueEmail="false" //注册邮箱必须唯一

 passwordFormat="Hashed" //加密方式

//可以改成其他加密方式如DES但是需修改其提供程序

maxInvalidPasswordAttempts="5" //密码的最大尝试次数 0 代表无限次

minRequiredPasswordLength="7" 最小密码长度minRequiredNonalphanumericCharacters="1" //特殊字符数 没有写0

passwordAttemptWindow="10" //密码输入框的有效时间(单位:分钟)

 passwordStrengthRegularExpression="" 密码验证的正则表达式

/>

      </providers>

</membership>

解析:

     <providers> 设置提供程序

     connectionStringName="LocalSqlServer"//连接字符串的名称

<connectionStrings>

           <add name="CRMConnStr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|CRM.MDF;Integrated Security=True;User Instance=True"></add>

 

|DataDirectory| 代表项目中的App_Data 文件夹

 

</connectionStrings>

B) 更改配置文件的提供程序

         <add name="CRMSqlMembershipProvider"

//提供程序的名称可以自定义

type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ConStr"

             minRequiredPasswordLength="6"

             minRequiredNonalphanumericCharacters="0"

             requiresUniqueEmail="true"

             requiresQuestionAndAnswer="false" />

 

C) 设置Membership 的默认提供程序

         web.config system.web 下的membership 节点下的提供程序只有一个默认为此提供程序不用设定 defaultProvider 属性

<membership defaultProvider="CRMSqlMembershipProvider">

D ) 若自定义的提供程序和machine.config 中的提供程序的名称相同则必须remove 原有的提供程序

<remove name="AspNetSqlMembershipProvider"/>

5. 登陆控件

        a) 得到当前登陆的用户名

                   得到当前的用户名 LoginName 控件

b)         得到当前页面的登陆状态

LoginStatus 控件

c)         CreateUserVizard 控件

              //得到当前控件的制定步骤

         this.CreateUserWizard1.WizardSteps[0];

         this.CreateUserWizard1.WizardSteps[0].FindControl("");

        //得到当前控件的活动步骤

         this.CreateUserWizard1.ActiveStep;

        //得到当前控件的活动步骤的ID

  this.CreateUserWizard1.ActiveStepIndex;

                   常用属性:

                            DisableCreateUser=true; 注册成功后不能使用(禁用)

                            LoginCreatedUser=”false”注册成功后是否处于登陆状态

                            AutoGeneratePassword=”true” 是否自动生成密码

6. 后台得到注册控件的注册信息,和其他注册信息的内容

            //得到当前注册用户的用户名

        ViewState["User"]=this.CreateUserWizard1.UserName;

        //通过当前注册用户的用户名得到用户的ID

        MembershipUser user1 = Membership.GetUser(this.CreateUserWizard1.UserName);

        Guid userid=(Guid)user1.ProviderUserKey;

        //得到当前用户的用户真实姓名和电话

         String  userName=(this.CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txtUserName") as TextBox).Text;

         String telephone = (this.CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txtTelephone") as TextBox).Text;

7.后台创建用户

     Membership.CreateUser("用户名", "password", "email", "密码提示问题", true, MembershipCreateStatus.Success);

最后一个参数:一个 MembershipCreateStatus 值,该值指示该用户是否成功创建或用户创建失败的原因。(是一个输出类型的参数)

8. 得到登陆用户的用户名

       User.identity.Name  User 的名称在web.config 文件中定义可以更改

9. 用户登陆

       a)登录方式和登录权限设定

       Web.config

<authentication mode="Forms">

<forms loginUrl="~/Login.aspx" name="User" defaultUrl="~/Manager/UserAdd.aspx"></forms>

                 //设定默认登录页面和登录后的跳转页面

           </authentication>

           <authorization>

                 <deny users="?"/>//?代表匿名用户

                 <allow users="*"/>//*代表所有用户

//设置登录权限 阻止匿名用户访问页面允许登录用户访问页面

           </authorization>

       b)解决阻止匿名用户访问页面后登录页面所引用的页面或样式无法显示问题

            

      <location path="validateCode.aspx">

           <system.web>

                 <authorization>

                      <allow users="?"/>

                      <allow users="*"/>

                 </authorization>

           </system.web>

      </location>

//将无限制的页面用location 标签配置 注意:此标签放在System.web 节点外

C)手动登录

       MemberShip.ValidateUser(用户名,密码);

d ) 得到当前登录的人数

       MemberShip.GetMemberShipOnline();

E ) 用户登录时显示验证码

1.       在登录界面中放置一个Image 控件

2.       Image控件的Url设置对应的验证图片页面路径

3.       编写验证页面,并将随机生成的验证码放到Session

  protected void Page_Load(object sender, EventArgs e)

    {

        System.Drawing.Bitmap image = new Bitmap(50, 30);

        Graphics graphics = Graphics.FromImage(image);

        graphics.Clear(Color.Yellow);

        StringBuilder sb = new StringBuilder();

        Random random = new Random();

        for (int i = 0; i < 4; i++)

        {

            sb.Append(random.Next(0, 10));

        }

        Session["ValidateCode"] = sb.ToString();

        Font font = new Font("宋体", 15, FontStyle.Bold | FontStyle.Italic);

 

        //渐变

        System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.White, 1.2f, true);

        graphics.DrawString(sb.ToString(), font, brush, 0, 0);

 

        //添加噪音线

        for (int i = 0; i < 3; i++)

        {

            Point p1 = new Point(random.Next(1, image.Width - 1), random.Next(1, image.Height - 1));

            Point p2 = new Point(random.Next(1, image.Width - 1), random.Next(1, image.Height - 1));

            graphics.DrawLine(Pens.Red, p1, p2);

        }

 

        //添加噪音点

        for (int i = 0; i < 50; i++)

        {

            image.SetPixel(random.Next(1, image.Width - 1), random.Next(1, image.Height - 1), colors[random.Next(0, colors.Length)]);

        }

 

        graphics.Save();

        Response.ContentType = "image/gif";

        image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);

        graphics.Dispose();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值