2014-10-17 76 views
5

我有一个ASP.NET网站,登录页面在成功验证的情况下重定向到默认页面。我在另一个域下有另一个ASP.NET站点,我需要放置一个登录表单,它将已经通过身份验证的用户重定向到第一个网站的默认页面。这样做的最好方法是什么?ASP.NET网站中的跨域登录

任何帮助将不胜感激..

+3

不明确?真? – ChrisBint 2014-10-17 14:04:59

+0

基本问题是您没有其他域的身份验证令牌。但是,应该可以对第一个站点执行AJAX请求,并且无论用户是否已登录(如果需要,包括重定向URL),都会返回该请求。您只需使用HTTP标头来告诉浏览器这是一个合法的行为(有效的接受来源)。 – Luaan 2014-10-17 14:26:09

+0

如果您有权访问这两个网站上的代码,则可以将标记添加到这两个网站都可以理解的查询字符串中,并将其转换为用于自动验证用户身份的信息。另一种选择是使用适当的单点登录,正如Joe建议的那样。 – 2014-10-17 14:46:57

回答

0

谢谢您的答复。我认为我的问题不够确切。

我解决了我的问题,使用iframe与第一个应用程序的登录页面作为源。

<iframe id = "iframe1" name ="loginFrame" src="http://domain2/Login.aspx?for_web=true" onload="iframeLoaded" ></iframe> 

要重定向到所述第一站点的登录的默认页面,添加的OnClientClick =“formWeb.target =‘_父’;”到登录按钮。所以当点击登录按钮时,如果认证成功,默认页面(在另一个域下)将在同一个窗口中打开(不是一帧)

<form id="formWeb" runat="server"> 
    <asp:Button ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" OnClientClick="formWeb.target ='_parent';" /> 
</form> 
+1

你已经回答了你自己的问题,但它的值得一提的JSON网络令牌,这些是轻量级的,并且在这个用例中是理想的 - http://jwt.io – 2014-10-21 15:06:29

1

你是什么之后是单点登录。在succsesful登录重定向的机制是在web.config

这里http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

<configuration> 
<system.web> 
<authentication mode="Forms" > 
    <!-- The name, protection, and path attributes must match 
     exactly in each Web.config file. --> 
    <forms loginUrl="login.aspx" 
    name=".ASPXFORMSAUTH" 
    protection="All" 
    path="/" 
    domain="contoso.com" 
    timeout="30" /> 
</authentication> 
<!-- Validation and decryption keys must exactly match and cannot 
    be set to "AutoGenerate". The validation and decryption 
    algorithms must also be the same. --> 
<machineKey 
    validationKey="[your key here]" 
    decryptionKey="[your key here]" 
    validation="SHA1" /> 

又见看这里:Asp.net forms authentication and multiple domains