zoukankan      html  css  js  c++  java
  • 用vs调试项目页面无样式

    ASP.NET Development Server 上的文件授权

    在文件系统网站中,静态文件(例如图像和样式表)遵守 ASP.NET 授权。例如,如果禁用了对静态文件的匿名访问,匿名用户则不能使用文件系统网站中的静态文件。但在 HTTP 位置中创建网站项目时,IIS 提供不使用授权规则的静态文件。

        .net提供了3种用户认证的方式,分别是Windows,Forms,Passport。

    这几种形式的定义可以在网站根目录下Web.config中的authentication节点中看见。Windows是默认的验证形式,它是根据机器的访问权限来判断的。Passport是微软提供的一种验证形式,不常用。我们需要的知道并了解的是forms形式。forms验证就是表单认证,提供了以身份id和密码的形式进行验证和授权管理的功能。

    1.配置web.config启用forms验证

    2.配置授权设置(哪些页面未注册用户可以访问)

    3.登录页面中生成用户票据便于其他页面访问

    配置web.config。

         配置方法如下,没有验证的用户根据配置自动跳转到loginUrl里面的页面去登陆。

    		<authentication mode="Forms">
    			<forms loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx"/>
    		</authentication>

    配置授权设置

     同样是在web.config中的<system.web>下增加如下节点,“?”的意思指匿名用户,而“*”则表示所有用户。下面这个意思就是说根目录下的所有页面拒绝被匿名用户访问。当然你也可以在users中填写指定的用户ID,不过那样并不常用。还有deny,allow的顺序是先写allow完了再deny,不然就会出现问题。这个大家要记住。

    		<authorization>
    			<deny users="?"/>
    		</authorization>

    生成用户票据

        我们在登录事件的逻辑代码中(Login.aspx下)增加如下代码:

                  //为用户创建一个票证,并将其放入cookie或者url中(具体看你怎么设置票证的保存方式)
                  FormsAuthentication.SetAuthCookie(userId, true);
                Response.Redirect("Info.aspx");

    很简单的几个设置就完成了用户的认证,是不是比你在每个页面中都判断用户是否登录简便的多呢?!当然了,上面的认证只是简单的认证。假如我要实现User文件夹内的网页只有登录用户可以访问,其他的则全部用户都可以访问怎么做呢?很简单,不需要你编写代码。更改一下配置文件就是了。将根目录下的web.config的authorization标签改为<allow users="*"/>。然后在user文件下加一个web.config并修改内容如下:

    <configuration>
        <appSettings/>
        <connectionStrings/>
        <system.web>
          <authorization>
            <deny users="?"/>  <!--拒绝匿名用户访问-->
          </authorization>
        </system.web>
    </configuration>

    个人写的测试webconfig如何起作用的代码
    设置允许匿名访问的文件和文件夹

    <location path="Default.aspx">
    <system.web>
    <authorization>
    <allow users="*"/>
    </authorization>
    </system.web>
    </location>
    <location path="Style">
    <system.web>
    <authorization>
    <allow users="*"/>
    </authorization>
    </system.web>
    </location>
    <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <!--设置验证类型和登录页面-->

    <authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <!--禁止匿名访问-->
    <authorization>
    <deny users="?"/>
    </authorization>

    ASP.NET实现匿名访问控制

    这篇文章有更详细的介绍。摘抄一段如下:

    ASP.NET控制方法:

    首先介绍例子实现的效果,一个网站登陆以后可以将用户信息保存在一个cookie中,并标识用户是通过身份验证的,在访问其他页面的时候直接对用户的身份是否通过验证进行判断,如果通过即可继续访问页面,如果是一个未通过验证的匿名访问用户(即未登录用户)则将跳转到登陆页面提示用户登录。设置其中一个用户注册页面为可以匿名访问,因为业务逻辑上只有允许注册才能登陆。

    在登陆页面还是先对用户的用户名和密码进行验证,至于使用与数据库比对的方法还是到AD中验证等都可以,然后通过以下的方法将当前用户在cookie中标识为通过验证的用户,并跳转到用户跳转到登陆页之前请求的页面。

    FormsAuthentication.RedirectFromLoginPage(userName,createPersistentCookie);

    FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked);

    在用户直接请求的页面上我们使用如下的方法来验证用户。

    Context.User.Identity.IsAuthenticated

    Context:获取与该页关联的 System.Web.HttpContext 对象

    User:为当前 HTTP 请求获取或设置安全信息

    Identity:获取当前用户的标识

    IsAuthenticated:获取一个bool值,该值指示是否验证了用户

    然后我们在Web.config中进行安全设置。

    <authentication mode="Forms">

        <forms loginUrl="Login.aspx"></forms>

    </authentication>

    "Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。

        <authorization>

            <deny users="?" />

        </authorization>

    deny表示禁止,users="?"表示匿名用户

      <location path="NewUser.aspx">

        <system.web>

            <authorization>

                <allow users="*" />

            </authorization>

        </system.web>

      </location>

    表示新用户注册页面NewUser.aspx,可以允许任何人访问。

    这样就实现了对于匿名用户的访问控制。

  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/Tpf386/p/6364715.html
Copyright © 2011-2022 走看看