需要得到的效果: 
********************************************************************************************** 
匿名用户即可访问,有浏览部分页面的权限,当用户登陆后才有提交/下载等权限。 用asp.NET实现。其实C#/VB等的实现方法是相同的,只是在功能代码部分略为有些语法上才差异,这里主要讲的是C#的。 
********************************************************************************************** 
实现: 
配置文件:Web.config中的最重要的部分: 
<authentication  mode="Forms"> 
<forms  name=".Kaersoft_FD_COOKIE"  loginUrl="Logon.aspx"   
protection="All"  timeout="30"> 
</forms> 
</authentication> 
<authorization> 
                 <allow  users="*"  />  <!--  允许所有用户  -->                         
         </authorization> 只需在Browers.aspx的Page_Load(object  sender,  System.EventArgs  e)中加入如下代码(用于判断如果用户未登陆(User.Identity.Name==""),则重定向到登陆页面,并保存当前的页面URL到Session["ForwardPage"]): 
if  (User.Identity.Name=="") 
{   
this.Response.Redirect("Logon.aspx"); 

********************************************************************************************** 
session的有关参考文献: 
为当前应用程序配置会话状态设置。 <configuration> 
      <system.web> 
            <sessionState> <sessionState  mode="Off|InProc|StateServer|SQLServer" 
                            cookieless="true|false" 
                            timeout="number  of  minutes" 
                            stateConnectionString="tcpip=server:port" 
                            sqlConnectionString="sql  connection  string" 
                            stateNetworkTimeout="number  of  seconds"/> 
必选属性 
属性  选项  说明   
mode          指定在哪里存储会话状态。   
        Off  指示会话状态未启用。   
        InProc  指示在本地存储会话状态。   
        StateServer  指示在远程计算机上存储会话状态。   
        SQLServer  指示在  SQL  Server  上存储会话状态。   可选属性 
属性  选项  说明   
cookieless          指定不具有  Cookie  的会话是否应用于标识客户端会话。   
        true  指示应使用不具有  Cookie  的会话。     
        false  指示不应使用没有  Cookie  的会话。默认值为  false。   
timeout          指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为  20。   
stateConnectionString          指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当  mode  为  StateServer  时该属性是必需的。   
sqlConnectionString          为  SQL  Server  指定连接字符串。例如“data  source=localhost;Integrated  Security=SSPI;Initial  Catalog=northwind”。当  mode  为  SQLServer  时该属性是必需的。   
stateNetworkTimeout          在使用  StateServer  模式存储会话状态时,指定在放弃会话之前  Web  服务器和状态服务器之间的  TCP/IP  网络连接空闲的时间(以秒为单位)。默认值为  10。   备注 
使用  StateServer  模式   确保  ASP.NET  状态服务正在将用于存储会话状态信息的远程服务器上运行。该服务与  ASP.NET  一起安装,其默认位置为  <驱动器>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe。   
在应用程序的  Web.config  文件中,设置  mode=StateServer  并设置  stateConnectionString  属性。例如,stateConnectionString="tcpip=sarath:42424"。   
使用  SQLServer  模式   在运行  SQL  Server  的计算机(它将存储会话状态)上运行  InstallSqlState.sql(默认的安装位置为  <驱动器>:\systemroot\Microsoft.NET\Framework\version)。这将创建一个名为  ASPState  的数据库,该数据库具有新的存储过程并且在  TempDB  数据库中具有  ASPStateTempApplications  表和  ASPStateTempSessions  表。   
在应用程序的  Web.config  文件中,设置  mode=SQLServer  并设置  sqlConnectionString  属性。例如,sqlConnectionString="data  source=localhost;Integrated  Security=SSPI;Initial  Catalog=northwind"。   
示例 
以下示例指定若干会话状态配置设置。 <configuration> 
      <system.web> 
            <sessionState  mode="InProc" 
                                        cookieless="true" 
                                        timeout="20"/> 
            </sessionState> 
      </system.web> 
</configuration> 
********************************************************************************************** 
身份验证的有关参考文献: 身份验证是从用户处获取标识凭据(如用户名和密码)并通过某些授权机构验证那些凭据的过程。如果这些凭据有效,则提交这些凭据的实体被视为已通过身份验证。在身份得到验证后,授权进程将确定该身份是否可以访问给定资源。 ASP.NET  通过身份验证提供程序(即包含验证请求方凭据所需代码的代码模块)来实现身份验证。ASP.NET  支持下表中描述的身份验证提供程序。 ASP.NET  身份验证提供程序  说明   
Forms  身份验证  一种系统,通过该系统利用  HTTP  客户端重定向将未经身份验证的请求重定向到某  HTML  窗体。用户提供凭据并提交该窗体。如果应用程序对请求进行身份验证,系统会发出一个  Cookie,在其中包含用于重新获取标识的凭据或密钥。随后发出的请求在请求头中具有该  Cookie,ASP.NET  事件处理程序使用应用程序开发人员指定的任何验证方法对这些请求进行身份验证和授权。   
Passport  身份验证  由  Microsoft  提供的集中身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。   
Windows  身份验证  ASP.NET  同时使用  Windows  身份验证和  Microsoft  Internet  信息服务  (IIS)  身份验证。IIS  以下面三种方式之一执行身份验证:基本、简要或集成  Windows  身份验证。在  IIS  身份验证完成后,ASP.NET  使用已验证的身份来授权访问。   若要为  ASP.NET  应用程序启用身份验证提供程序,只需按下文所示为应用程序配置文件创建一个项。 //  Web.config  file           
<authentication  mode=  "[Windows|Forms|Passport|None]"/> 
模式设置为以下身份验证模式之一:Windows、Forms、Passport  或  None。默认为  Windows。如果模式是  None,则  ASP.NET  不对请求进行任何附加身份验证  -  如果您要实现自定义身份验证方案,或者如果您只使用匿名身份验证并想得到可能的最高性能级别,此模式可能非常有用。 该身份验证模式无法在应用程序根目录以下的级别进行设置。与其他  ASP.NET  模块的情况一样,除非显式重写,否则,URL  空间中的子目录会继承身份验证模块。