不会吧,webconfig的设定可以基于程序的,不会共享吧

解决方案 »

  1.   


        <authorization>
    <deny users="?"/>
        </authorization>写了??
      

  2.   

    I am wondering if you can just change the authentication cookie's path to "/" (didn't test, so it might not work):HttpCookie cookie = FormsAuthentication.GetAuthCookie (UserName, true);
    cookie.Path = "/";
    Response.Cookies.Add(cookie);
    Response.Redirect (FormsAuthentication.GetRedirectUrl (UserName, true)); 
      

  3.   

    是放在不同的虚拟目录下了, 
    <authorization>
    <deny users="?"/>
        </authorization>
    也写了。
    确实不行,我也纳闷
    关于思归兄的代码,不知道放在哪,
      

  4.   

    思归的代码就写在你进行验证登录的cs文件里"
    在login.aspx的登陆按钮中
                FormsAuthentication.RedirectFromLoginPage(id, False)"
      

  5.   

    我对cookie并不是很熟悉以下是我的想法:
    如果登陆的cookie不因为登陆站点的不同而不同也就是说cookie中只有你的用户名那么。
    只要把这两个网站的cookie放在客户端的同一目录下即可。如果cookie带有站点的信息那么无论如何都是无法登陆的。以上是我的看法。
      

  6.   

    我发现了,是没有指定cookie文件名
      

  7.   

    my method doesn't work in 1.1, so you might consider to use database backend to keep the login information
      

  8.   

    <authentication mode="Forms">
    <forms name="login" path="/" loginUrl="login.aspx">
    </forms> 


    </authentication> 

    <authorization>
    <deny users="?"/>
    </authorization>
      

  9.   

    身份的判断在Global.asax 中判断protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
    HttpApplication app=(HttpApplication)sender;
    HttpContext ctx=app.Context;
    //如果验证成功
    if(ctx.Request.IsAuthenticated==true)

    FormsIdentity typeID=(FormsIdentity)ctx.User.Identity;
    FormsAuthenticationTicket ticket=typeID.Ticket;
    string []role=ticket.UserData.Split(',');
    ctx.User=new GenericPrincipal(typeID,role);
    } }如果没有验证成功,就会由web.config 配置中  自动导向  login.aspx 页面
      

  10.   

    Forms身份验证基本原理:一 身份验证要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置:<authentication mode="Forms"> 
        <forms name=".ASPXAUTH " loginUrl="/login.aspx" timeout="30" path= "/">
        </forms> 
    </authentication>其中<authentication mode= "Forms"> 表示本应用程序采用Forms验证方式。
    1. <forms>标签中的name表示指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。采用此种方式验证用户后,以此用户的信息建立一个FormsAuthenticationTicket类型的身份验证票,再加密序列化为一个字符串,最后将这个字符串写到客户端的name指定名字的Cookie中.一旦这个Cookie写到客户端后,此用户再次访问这个web应用时会将连同Cookie一起发送到服务端,服务端将会知道此用户是已经验证过的. 再看一下身份验证票都包含哪些信息呢,我们看一下FormsAuthenticationTicket类:
    CookiePath: 返回发出 Cookie 的路径。注意,窗体的路径设置为 /。由于窗体区分大小写,这是为了防止站点中的 URL 的大小写不一致而采取的一种保护措施。这在刷新 Cookie 时使用
    Expiration: 获取 Cookie 过期的日期/时间。
    IsPersistent: 如果已发出持久的 Cookie,则返回 true。否则,身份验证 Cookie 将限制在浏览器生命周期范围内。
    IssueDate: 获取最初发出 Cookie 的日期/时间。
    Name: 获取与身份验证 Cookie 关联的用户名。
    UserData :获取存储在 Cookie 中的应用程序定义字符串。
    Version: 返回字节版本号供将来使用。
    2. <forms>标签中的loginUrl指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。loginUrl指定的页面就是用来验证用户身份的,一般此页面提供用户输入用户名和密码,用户提交后由程序来根据自己的需要来验证用户的合法性(大多情况是将用户输入信息同数据库中的用户表进行比较),如果验证用户有效,则生成同此用户对应的身份验证票,写到客户端的Cookie,最后将浏览器重定向到用户初试请求的页面.一般是用FormsAuthentication.RedirectFromLoginPage 方法来完成生成身份验证票,写回客户端,浏览器重定向等一系列的动作.public static void RedirectFromLoginPage( string userName, bool createPersistentCookie, string strCookiePath );其中:
    userName: 就是此用户的标示,用来标志此用户的唯一标示,不一定要映射到用户账户名称.
    createPersistentCookie: 标示是否发出持久的 Cookie。
    若不是持久Cookie,Cookie的有效期Expiration属性有当前时间加上web.config中timeout的时间,每次请求页面时,在验证身份过程中,会判断是否过了有效期的一半,要是的话更新一次cookie的有效期;若是持久cookie,Expiration属性无意义,这时身份验证票的有效期有cookie的Expires决定,RedirectFromLoginPage方法给Expires属性设定的是50年有效期。
    strCookiePath: 标示将生成的Cookie的写到客户端的路径,身份验证票中保存这个路径是在刷新身份验证票Cookie时使用(这也是生成Cookie的Path),若没有strCookiePath 参数,则使用web.config中 path属性的设置。这里可以看到,此方法参数只有三个,而身份验证票的属性有七个,不足的四个参数是这么来的:
    IssueDate: Cookie发出时间由当前时间得出,
    Expiration:过期时间由当前时间和下面要说的<forms>标签中timeout参数算出。此参数对非持久性cookie有意义。
    UserData: 这个属性可以用应用程序写入一些用户定义的数据,此方法没有用到这个属性,只是简单的将此属性置为空字符串,请注意此属性,在后面我们将要使用到这个属性。
    Version: 版本号由系统自动提供.RedirectFromLoginPage方法生成生成身份验证票后,会调用FormsAuthentication.Encrypt 方法,将身份验证票加密为字符串,这个字符串将会是以.ASPXAUTH为名字的一个Cookie的值。这个Cookie的其它属性的生成:Domain,Path属性为确省值,Expires视createPersistentCookie参数而定,若是持久cookie,Expires设为50年以后过期;若是非持久cookie,Expires属性不设置。
    生成身份验证Cookie后,将此Cookie加入到Response.Cookies中,等待发送到客户端。
    最后RedirectFromLoginPage方法调用FormsAuthentication.GetRedirectUrl 方法获取到用户原先请求的页面,重定向到这个页面。3. <forms>标签中的timeout和path,是提供了身份验证票写入到Cookie过期时间和默认路径。以上就是基于Forms身份验证的过程,它完成了对用户身份的确认。