有一站点:
  有一个后台管理(所有后台文件都放在名称为TestAdmin的文件夹中),需要登陆才可以进入后台管理。  站点前台有一个会员系统,几个页面需要会员登陆后才可以使用。当然 会员跟 后台管理员是互不相干的。怎么配置web.config呢?<authentication mode="Forms">
<forms name="TestAuth" protection="All" timeout="60" loginUrl="TestAdmin/index.aspx" />
</authentication> <location path="TestAdmin">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
 </location> <location path="ChangePassword.aspx">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
 </location>
.
.
.这样子设置:
问题1:如果前台登陆了,那么就可以进入后台了问题2:如果没有登陆时打开ChangePassword.aspx 就会转到 TestAdmin/index.aspx
而不是 login.aspx

解决方案 »

  1.   

    <authentication mode="Forms">
    <forms name="TestAuth" protection="All" timeout="60" loginUrl="TestAdmin/login.aspx" />
    </authentication><authorization>
            <allow users="*" />    
    </authorization><location path="TestAdmin">
    <system.web>
    <authorization>
    <deny users="?"/>
    </authorization>
    </system.web>
    </location>上面功能是实现:在未登录时访问TestAdmin目录下的文件都转到login.aspx页面。
    那个前台会员系统就以此类推
      

  2.   

    使用session啊?前台的session和后台的session使用不同的名字.
    在每个页面中判断该session是否有权限访问该页面.
      

  3.   

    为了防止用户没有经过验证就访问站点,当用户没有通过验证的时候点击任何页面将会直接跳到Login.aspx页面,具体代码如下:<authentication mode="Forms">
      <forms name="yourAuthCookie" loginUrl="login.aspx"
        protection="All" path="/" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>  但是这样会产生一个问题,那就是如果站点有一些信息是可以让任意用户随意访问的,比如站点简介,使用说明等。如果按照上面的处理方法岂不让用户觉得很麻烦,在ASP.NET中有相应的解决办法。下面的代码可以实现匿名用户访问Test.aspx页面:<location path="test.aspx">
        <system.web>
          <authorization>
            <allow users="?" />
          </authorization>
        </system.web>
      </location>
      

  4.   

    另一个办法
    web.config是面向目录的的.
    TestAdmin目录下单独放个web.Config.
    其它的前台的用户登陆也放在单独目录下.设置单独的web.config
      

  5.   

    adandelion(猪头) ( ) 信誉:100  2005-08-18 17:00:00  得分: 0  
     
     
       另一个办法
    web.config是面向目录的的.
    TestAdmin目录下单独放个web.Config.
    其它的前台的用户登陆也放在单独目录下.设置单独的web.config
      
     
    我试了这样在TestAdmin目录的web.config加了
    <authentication mode="Forms">
    <forms name="TestAuth" protection="All" timeout="60" loginUrl="TestAdmin/index.aspx" />
    </authentication>
    根目录加了
    <authentication mode="Forms">
    <forms name="TestAuth" protection="All" timeout="60" loginUrl="index.aspx" />
    </authentication>报错了
      

  6.   

    在asp下使用session来记录用户是否登陆asp.net下 也经常使用session来记录用户是否登陆?
      

  7.   

    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------配置错误 
    说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。导致该错误的原因可能是在 IIS 中没有将虚拟目录作为应用程序进行配置。源错误: 
    行 3:    <system.web>
    行 4:  
    行 5:      <authentication mode="Forms">
    行 6:   <forms name="XYDAuth" protection="All" timeout="60" loginUrl="TestAdmin/index.aspx" />
    行 7:      </authentication>
     
      

  8.   

    TestAdmin下的 Web.Config<?xml version="1.0" encoding="utf-8" ?>
    <configuration>     
      <system.web>    <authentication mode="Forms">
    <forms name="XYDAuth" protection="All" timeout="60" loginUrl="TestAdmin/index.aspx" />
        </authentication>
       
     </system.web></configuration>
      

  9.   

    只添加用句
    其它的不要

    allowDefinition='MachineToApplication' 等等
    只要
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>     
      <system.web>    <authentication mode="Forms">
    <forms name="XYDAuth" protection="All" timeout="60" loginUrl="TestAdmin/index.aspx" />
        </authentication>
       
     </system.web></configuration>===============================
        CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
    软件!
        界面: http://qqwwee.com/
        下载: http://qqwwee.com/csdn.rar 包含源代码
      

  10.   

    <authentication mode="Forms">
    <forms name="TestAuth" protection="All" timeout="60" loginUrl="TestAdmin/login.aspx" />
    </authentication><authorization>
            <allow users="*" />    
    </authorization><location path="TestAdmin">
    <system.web>
    <authorization>
    <deny users="?"/>
    </authorization>
    </system.web>
    </location>上面功能是实现:在未登录时访问TestAdmin目录下的文件都转到login.aspx页面。
    那个前台会员系统就以此类推
    -------------------------------------
    上面的绝对可以啊,我自己目前的就是这样
      

  11.   

    象你现在这个FORMS验证,你只是要处理后台那个testadmin文件夹的问题而已,前台那个会员系统跟这个不要有关系是吗?ChangePassword.aspx这个文件是在testadmin文件夹下?
      

  12.   

    to:hackate(兰花开香入梦境,独思佳人亦飘然!!) ChangePassword.aspx
    是前台的。
      

  13.   

    那看你好像前台后台都要验证,你可以参考这个看看
    http://community.csdn.net/Expert/TopicView.asp?id=4079365
      

  14.   

    hackte,thanks验证的我也是在userData保存角色的但我是在程序中判断是访问者是属于什么角色
    if(Page.User.IsInRole("Admin") == false)
    {
    Server.Transfer("index.aspx");
    }
    居然没有想到在web.config设置基于角色的验证
     <location path="TestAdmin">
        <system.web>
          <authorization>
    <allow roles="Admin"/>
            <deny users="*" />
          </authorization>
        </system.web>
     </location>现在还是这个问题:如果没有登陆时打开ChangePassword.aspx 就会转到 TestAdmin/index.aspx
    而不是 login.aspx
    ,按照你发的贴,那位老兄是在首页放一个login.aspx,然后根据ReturnRrl转到相应的登陆页面,
    但是我想通过配制web.config应该可以达到目的的