asp.net窗体身份验证重定向问题
默认文档功能在IIS中被关闭,这里的情况...asp.net窗体身份验证重定向问题
我的项目开始页说的是A.aspx。我运行该项目,果然,A.aspx出现在浏览器的url中。就像它应该虽然,A.aspx发现没有用户登录并重定向到Login.aspx应该像。
A.aspx:
if (Session["UserStuff"] == null)
Response.Redirect("~/Account/Login.aspx");
的login.aspx的显示出来,但是当在,代码的用户日志:
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text,TRUE);
总是重定向到
我已经研究FormsAuthentication.GetRedirectUrl果然返回“Default.aspx的”
我难倒“的Default.aspx”,而不是“A.aspx”? ??
在web.config
你可以set the default page使用defaultUrl
属性:
<authentication mode="Forms">
<forms
loginUrl="login.aspx"
defaultUrl="a.aspx"
protection="All"
timeout="30"
/>
</authentication>
这是系统管道。 – Venemo 2010-08-14 12:30:50
如果您使用FormsAuthentication,你的设置应该在web.config中定义。这听起来像是你在DefaultUrl的web.config中有一个默认设置。你不应该需要会话重定向。 FormsAuthentication应该为您执行此操作。如果没有找到它,检查会话并强制SignOut()不会受到影响,但FormsAuthentication应该执行此重定向。
谢谢,但我找不到包含default.aspx的web.config中的任何内容,而不是它在默认文档列表中,但启用=“false”。 反正我不一定需要一个默认的URL。我希望用户在验证后可以重定向到他们的原始页面(A.aspx)。 – Bob 2010-08-14 12:23:43
这是一篇不错的文章,但它并不完全是我想要做的。我的问题是,当请求A.aspx时,如果用户未通过身份验证,则会将其发送到登录页面,然后重定向到其原始请求,而不是硬编码页面。问题是GetRedirectURL始终是default.aspx,而不是原始的A.aspx请求。 – Bob 2010-08-14 12:31:04
@Bob - 如果你没有DefaultUrl,它只会选择default.aspx作为框架。当FormsAuthentication使用自己的机制时,会将一个RedirectUrl附加到url到login.aspx,并且用户在该点处正确重定向。如果没有指定RedirectUrl,则使用DefaultUrl,因此不会因为指定它而受伤。我认为这里的问题是,您使用自己的会话代码来执行此重定向,而不是允许FormsAuth处理它。 – 2010-08-14 12:37:28
听起来不错。我不能正确地进行表单身份验证,并且default.aspx来自框架 - 感谢我会看看我能做些什么。 – Bob 2010-08-14 12:44:42
从我的理解,当用户redirectoed到您的登录屏幕,窗体身份验证机制将添加该用户最初特林访问的页面的网址,到登录网址他们用户试图访问。例如,如果您有一个登录页面:http; // bob/login.aspx,并且用户试图访问http; // bob/showmethemoney.aspx,那么他们将被重定向到http; // bob/login。 ASPX?RETURNURL = showmethemoney.aspx。因此,如果您在用户登录后使用ReturnUrl重定向用户,则用户将始终返回到他们最初尝试访问的资源。
这里需要注意的一点很重要,您应该避免使用会话进行身份验证信息/状态。由于您正在使用FormsAuth,因此仅使用它来确定身份验证。使用会话来存储用户级别的偏好等(在用户认证之后填充)。 – captaintom 2010-08-14 12:27:11
是的,没错,我只检查用户在会话中是否有“内容”,但我没有对会话进行身份验证。我实际上是通过第三方API进行身份验证,然后在会话中放置一个对象,如果成功的话。 – Bob 2010-08-14 12:39:11