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,可以允许任何人访问。

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

  • 相关阅读:
    排序算法(三人组加上快排)
    property函数的使用
    nginx
    列表中相同key的字典相加
    python的数据结构
    循环的应用
    JPA使用指南 javax.persistence的注解配置讲解
    Spring中使用@Value读取porperties文件中的属性值方法总结及注意事项
    java中Properties类及读取properties中属性值
    jackson中@JsonProperty、@JsonIgnore等常用注解总结
  • 原文地址:https://www.cnblogs.com/Tpf386/p/6364715.html
Copyright © 2011-2022 走看看