ASP.NET登录页重定向问题

ASP.NET登录页重定向问题,asp.net,authentication,deployment,redirect,login,Asp.net,Authentication,Deployment,Redirect,Login,我正在构建一个基于ASP.NET Web应用程序的silverlight应用程序支持IIS7/SSL的网站。 为了安全起见,我将silverlight页面放在ASP.NET Web应用程序的Members文件夹中,并限制匿名用户的访问。(请参阅下面的Web.config) 当用户尝试访问Members文件夹下的页面时,他们会被重定向到。(见下面的web.config) (我已经将www.ssldemo.com映射到127.0.0.1)。 为了安全起见,我在login.aspx中切换到HTTPS,

我正在构建一个基于ASP.NET Web应用程序的silverlight应用程序支持IIS7/SSL的网站。
为了安全起见,我将silverlight页面放在ASP.NET Web应用程序的Members文件夹中,并限制匿名用户的访问。(请参阅下面的Web.config)

当用户尝试访问Members文件夹下的页面时,他们会被重定向到。(见下面的web.config) (我已经将www.ssldemo.com映射到127.0.0.1)。 为了安全起见,我在login.aspx中切换到HTTPS,并在验证后返回HTTP。 下面是login.aspx.cs的代码

    protected void Page_Load(object sender, EventArgs e)
    {
        LoginControl.LoggedIn += new EventHandler(LoginControl_LoggedIn);
    }

    void LoginControl_LoggedIn(object sender, EventArgs e)
    {
        //for going to ReturnURL & switching back to HTTP
        string serverName = HttpUtility.UrlEncode(Request.ServerVariables["SERVER_NAME"]);
        string returnURL = Request["ReturnURL"];
        Response.Redirect(ResolveClientUrl("http://" + serverName + returnURL)); 
    }
问题是,当我将另一个应用程序部署到 开放,, 用户将被重定向到。 但是即使我在登录页面输入了正确的凭据,我也会再次被重定向到同一登录页面,而不是返回URL。当我看着fiddler时,它说“302物体移到了这里。”

谢谢你的阅读!任何意见都将不胜感激

<configuration>
<connectionStrings>
    <add name="CompanyDatabase" connectionString="Data Source=192.168.0.2;Initial Catalog=SomeTable;User ID=Username;Password=P@ssword" />
</connectionStrings>

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
        <forms slidingExpiration="true" timeout="15"
               loginUrl="https://www.ssldemo.com/authenticationtest/login.aspx"
               defaultUrl="~/Members/Default.aspx"
               >
        </forms>
    </authentication>
    <!--Custom Membership Provider-->
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="15">
        <providers>
            <clear />
            <add name="MyMembershipProvider"
                 type="AuthenticationTest.Web.MyMembershipProvider"
                 connectionStringName="CompanyDatabase"
                 applicationName="AuthenticationTest.Web"/> 
        </providers>
    </membership>
</system.web>
<!--securing folders-->
<location path="Members">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>    
</configuration>

成员下面的应用程序(子应用程序)继承了上面的设置,因此它会选择您的身份验证设置,这就是它进入该登录页面的原因

它永远不起作用的原因与票据的加密方式有关。除非进行一些额外的配置,否则不能在应用程序之间重用票证。这将停止用户在一个应用中进行身份验证,然后访问服务器上的其他所有应用。Asp.Net通过为每个应用程序创建一个新的随机键来实现这一点

首先,需要将enableCrossAppRedirects=true添加到forms元素。然后,您需要将两个应用中的MachineKey设置为相同,以便两个应用都可以解码身份验证票证

这一页可能会有所帮助