首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET SqlMembershipProvider无限循环?

ASP.NET SqlMembershipProvider无限循环?
EN

Stack Overflow用户
提问于 2009-08-18 16:34:49
回答 2查看 844关注 0票数 1

我正在尝试使用我在ASP.NET v2.0中的成员资格提供程序范例中找到的few tutorials配置身份验证。我遵循了本教程中的示例,但似乎无法使FormsAuthentication.RedirectFromPage方法正常工作。当我尝试登录时,通过Membership.ValidateUser验证用户凭据,但页面被发送回Login.aspx而不是Default.aspx。下面是我的web.config中的相关代码片段:

代码语言:javascript
复制
...
<authentication mode="Forms">
  <forms loginUrl="Login.aspx" protection="All" timeout="60" name="POTOKCookie" requireSSL="false" path="/FormsAuth"
         slidingExpiration="true" cookieless="UseCookies" enableCrossAppRedirects="false" defaultUrl="~/Default.aspx"/>
</authentication>
<authorization>
  <deny users="?" />
</authorization>
...
<membership defaultProvider="CustomizedProvider">
  <providers>
    <clear />
    <add name="CustomizedProvider"
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="LoginDB2"
         applicationName="POTOK"
         minRequiredPasswordLength="5"
         minRequiredNonalphanumericCharacters="0" />
  </providers>
</membership>

我已经验证了我的连接字符串是正确的(因为Membership.ValidateUser似乎工作得很好),并且正在为我的Login.aspx页面上的UI使用ASP.NET Login控件。以下是authenticate事件处理程序代码:

代码语言:javascript
复制
Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
    If (Membership.ValidateUser(Login1.UserName, Login1.Password)) Then
        FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet)
    End If
End Sub

当我访问url (http://localhost/Project)时,我被带到:http://localhost/Project/Login.aspx,在“登录”之后,我的url是:http://localhost/Project/Login.aspx?ReturnUrl=%2fProject%2fDefault.aspx

我是不是错过了一个配置步骤?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-19 07:55:14

问题出在path="/FormsAuth“参数中。删除此变量,然后重试

关于路径可能出错的原因的Read this post

来自MSDN:路径-可选属性。指定应用程序发出的cookies的路径。默认值是斜杠(/),因为大多数浏览器区分大小写,如果路径大小写不匹配,则不会发送回cookie。

注意: path属性区分大小写。因此,如果您将path属性的值设置为/application1,并且应用程序名称为Application1,则身份验证cookie路径为/application1。

因此,如果你想使用路径属性,你应该将它设置为"/project“,因为项目是你的应用程序的名称(据我所知)。但是我不认为当你使用不同的cookies名称时,你需要有不同的路径(例如,这个应用程序中的name="POTOKCookie“,我希望与安装在同一主机上的其他ASP.NET应用程序不同)

请参阅PRB: Forms Authentication Requests Are Not Directed to loginUrl Page

票数 1
EN

Stack Overflow用户

发布于 2009-08-18 16:47:42

如果将“登录”控件与ASP.NET成员身份一起使用,则无需编写代码即可执行身份验证。但是,如果要创建自己的身份验证逻辑,则可以处理Login控件的身份验证事件并添加自定义身份验证代码。

因此,我建议您简单地删除Login1_Authenticate事件,因为控件本身负责调用ValidateUser和重定向。

还要检查Login控件的DestinationPageUrl属性

如果未指定DestinationPageUrl属性的值,则用户将在成功登录后重定向到用户请求的原始页。因此,在您的情况下,不应设置此属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1295044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档