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

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

 

posted on 2017-02-04 13:23  荆棘人  阅读(238)  评论(0编辑  收藏  举报

导航