好的,问题在于:
我有两个站点:www.mysite.com和blog.mysite.com(虚假站点名称),它们假设共享身份验证。 登录页面位于www.mysite.com/login/login.aspx
现在,博客网站的web.config包含以下身份验证部分:
<authentication mode="Forms">
<forms timeout="50000000"
loginUrl="http://www.mysite.com/login/login.aspx"
defaultUrl="~/"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
现在我点击blog.mysite.com/andrey/page.aspx
,然后重定向到www
网站上的登录页面。真正的问题是“reditect”查询字符串只包含相对页面网址(andrey/page.aspx
),所以当我登录时会尝试将我重定向到www.mysite.com/andrey/page.aspx
,而不是blog.mysite.com/andrey/page.aspx
我开始所以当然一切都失败了。
有没有办法告诉Membership对象在跳转到登录页面时将完整路径放入“重定向”查询字符串参数?
谢谢! 安德烈
答案 0 :(得分:1)
假设每个域都有自己的web.config,我认为这可能有用。
1)为www.mysite.com和blog.mysite.com创建登录页面
2)指向同一会员数据库
3)确保两者都具有相同的成员资格applicationName属性集:
<membership><providers><add applicationName="mySite">
4)确保两者都具有相同的表单名称集:
<authentication mode="Forms"><forms name="mySite">
这应该确保两个站点使用相同的成员资格数据库和相同的身份验证cookie,但是他们将使用他们各自的登录页面,因此返回URL应该没问题。
您可以拨打FormsAuthentication.SetAuthCookie Method并手动重定向到http推荐人吗?
我刚在FormsAuthentication.RedirectFromLoginPage
的文档中看到了这一点默认情况下,ReturnUrl变量 必须引用内的页面 目前的申请。如果ReturnUrl 指的是不同的页面 应用程序或在不同的服务器上, RedirectFromLoginPage方法 重定向到中的URL DefaultUrl属性。如果你想 允许重定向到页面外的页面 当前的应用程序,你必须设置 EnableCrossAppRedirects属性 使用enableCrossAppRedirects时为true 表单配置的属性 元件。安全说明安全注意:
设置EnableCrossAppRedirects 属性为true允许 跨应用程序重定向是一个 潜在的安全威胁。什么时候 跨应用程序重定向是 允许,您的网站容易受到攻击 使用您的恶意网站 登录页面以说服您的网站 他们使用安全的用户 您网站上的页面。为了提高安全性 使用跨应用程序时 重定向,你应该重写 RedirectFromLoginPage方法允许 仅重定向到已批准的网站。
搞乱那个属性有帮助吗?