比如一个站点,管理后台(Admin目录)需要一个登录窗口,登录后定向到Admin/Default.aspx页面,同时站点内容中又有成员角色的需要,通过登录窗口登录到/SomePage.aspx页面。能通过在<authentication>节里配置来实现吗?

解决方案 »

  1.   

    <authentication>只能根据角色分配访问权限,不能控制登陆成功的导向
      

  2.   

    在ADMIN目录中再重新建一个web.config文件,具体配置,
      

  3.   

    <forms name="SmartWebManageAuth" loginUrl="WebManage/Login.aspx" defaultUrl="WebManage/Default.aspx"  protection="None" timeout="60" path="WebManage" />
    其中的defaultUrl就是控制登录后的转向页面。Admin目录下的web.config不能再添加一个<authentication>节
      

  4.   

    1.1SDK:<forms> 元素请参见
    <authentication> 元素 | ASP.NET 配置 | ASP.NET 设置架构
    要求
    包含于:<system.web>Web 平台:IIS 5.0、IIS 5.1、IIS 6.0配置文件:Machine.config、Web.config配置节处理程序:System.Web.Configuration.AuthenticationConfigHandler
    为基于窗体的自定义身份验证配置 ASP.NET 应用程序。<configuration>
       <system.web>
          <authentication>
             <forms><forms name="name" 
           loginUrl="url"
           protection="All|None|Encryption|Validation"
           timeout="30"
           path="/" 
           requireSSL="true|false"
           slidingExpiration="true|false">
       <credentials passwordFormat="format"/>
    </forms>
    可选属性
    属性 选项 说明 
    name     指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。如果在单个服务器上正运行多个应用程序并且每一应用程序均要求唯一的 Cookie,则您必须在每一应用程序的 Web.config 文件中配置 Cookie 名称。 
    loginUrl     指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。 
    protection     指定 Cookie 使用的加密类型(如果有)。 
        All 指定应用程序同时使用数据验证和加密来保护 Cookie。该选项使用已配置的数据验证算法(基于 <machineKey> 元素)。如果三重 DES (3DES) 可用并且密钥足够长(48 位或更多),则使用三重 DES 进行加密。All 是默认(和建议)值。 
        None 指定对于将 Cookie 仅用于个性化并且具有较低的安全要求的站点而言,同时禁用加密和验证。不推荐以此方式使用 Cookie;但是,这是使用 .NET Framework 启用个性化的占用资源最少的方式。 
        Encryption 指定使用三重 DES 或 DES 对 Cookie 进行加密,但不对该 Cookie 执行数据验证。以此方式使用的 Cookie 可能会受到精选的纯文本的攻击。 
        Validation 指定验证方案验证已加密的 Cookie 的内容在转换中是否未被改变。Cookie 是使用 Cookie 验证创建的,方式是:将验证密钥和 Cookie 数据相连接,然后计算消息身份验证代码 (MAC),最后将 MAC 追加到输出 Cookie。 
    timeout     指定以整数分钟为单位的时间量,超过此时间量,Cookie 将过期。默认值是 30。如果 SlidingExpiration 属性为 true,则 timeout 属性是一个弹性值,以收到最后一个请求后指定的分钟数为到期时间。为避免危及性能,以及为避免向启用 Cookie 警告的用户显示多个浏览器警告,在经过了超过一半的指定时间后更新该 Cookie。这可能导致精确性上的损失。持久性 Cookie 不超时。 
    path     为由应用程序发出的 Cookie 指定路径。默认值是正斜杠 (/),这是因为大多数浏览器是区分大小写的,并且如果路径大小写不匹配,将不发送回 Cookie。 
    requireSSL     指定是否需要安全连接来转换身份验证 Cookie。 
        true 指定必须使用安全连接来保护用户凭据。如果是 true, ASP.NET 为身份验证 Cookie 设置 HttpCookie.Secure,兼容的浏览器不返回 Cookie,并且除非连接使用的是安全套接字层 (SSL)。 
        false 指定在传输 Cookie 时,安全连接不是必需的。默认值为 false。 
    slidingExpiration     指定是否启用弹性过期时间。在单个会话期间,弹性过期时间针对每个请求重置当前身份验证 Cookie 的过期时间。 
        true 指定启用弹性过期时间。在单个会话期间,身份验证 Cookie 被刷新,并且每个后续请求的到期时间被重置。ASP.NET 版本 1.0 的默认值为 true。 
        false 指定不启用弹性过期时间,并指定 Cookie 在最初发出之后,经过一段设定的时间间隔后失效。默认值为 false。 子标记
    子标记 说明 
    <credentials> 允许在配置文件中定义名称和密码凭据。您还可以实现自定义的密码架构,以使用外部源(如数据库)来控制验证。 备注
    如果在单个服务器上运行多个应用程序,则必须在 Web.config 文件中为每一个应用程序配置 <forms> 属性。示例
    以下示例为基于窗体的身份验证配置站点,指定传输来自客户端的登录信息的 Cookie 的名称,并指定当初始身份验证失败时所使用的登录页的名称。<configuration>
       <system.web>
          <authentication mode="Forms">
             <forms name="401kApp" loginUrl="/login.aspx">
                <credentials passwordFormat = "SHA1" 
                   <user name="UserName" 
                         password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
                </credentials>
             </forms>
          </authentication>
       </system.web>
    </configuration>
    要求
    包含于:<system.web>Web 平台:IIS 5.0、IIS 5.1、IIS 6.0配置文件:Machine.config、Web.config配置节处理程序:System.Web.Configuration.AuthenticationConfigHandler请参见
    <authentication> 元素 | ASP.NET 配置 | ASP.NET 设置架构发送有关此主题的意见 &copy; 2001-2002 Microsoft Corporation。保留所有权利。