在 ASP.NET 中使用成员身份处理身份验证
好的,问题是:
我有两个网站: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”查询字符串只包含相对页面 URL (andrey/page.aspx
),因此当我登录时,它会尝试将我重定向到 www.mysite.com /andrey/page.aspx
,而不是我开始的 blog.mysite.com/andrey/page.aspx
所以当然一切都会失败。
有没有办法告诉会员对象在弹跳到登录页面时将完整路径放入“重定向”查询字符串参数中?
谢谢! 安德烈
Ok, here is the problem:
I have two sites: www.mysite.com and blog.mysite.com (fake site names) which suppose to share authentication.
The login page is on www.mysite.com/login/login.aspx
Now, the blog website has web.config with following authentication section:
<authentication mode="Forms">
<forms timeout="50000000"
loginUrl="http://www.mysite.com/login/login.aspx"
defaultUrl="~/"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Now I hit blog.mysite.com/andrey/page.aspx
and it redirects me to login page which is on www
site. The real problem is that "reditect" query string will only contain relative page url (andrey/page.aspx
), so when I login it will try to redirect me to www.mysite.com/andrey/page.aspx
, not blog.mysite.com/andrey/page.aspx
where i started so of course everything fails.
Is there a way to tell Membership object to put the full path into "redirect" query string parameter when it bounces to login page?
Thanks!
Andrey
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设每个域都有自己的 web.config,我认为这可能有效。
1) 为 www.mysite.com 和 blog.mysite.com 创建登录页面
2)将两者指向同一个会员数据库
3) 确保两个站点具有相同的成员资格 applicationName 属性集:
4) 确保两个站点具有相同的表单名称集:
这应确保两个站点使用相同的成员资格数据库和相同的身份验证 cookie,但它们将使用各自的登录名页面,所以返回 url 应该没问题。
您可以调用 FormsAuthentication.SetAuthCookie 方法 并手动重定向到http引荐来源网址?
我刚刚在 FormsAuthentication.RedirectFromLoginPage 的文档中看到了这一点
弄乱该财产有什么帮助吗?
Assuming that each domain has its own web.config, I think this might work.
1) Create a login page for both www.mysite.com and blog.mysite.com
2) Point both to the same membership database
3) Make sure both have the same membership applicationName attribute set:
4) Make sure both have the same forms name set:
This should ensure that both sites use the same membership database and the same authentication cookie, but they'll use their individual login pages and so the return url should be fine.
Can you call the FormsAuthentication.SetAuthCookie Method and manually redirect to the http referrer?
I just saw this in the documentation for FormsAuthentication.RedirectFromLoginPage
Does messing with that property help at all?