asp.net – 通过ASP .Net成员身份进行用户登录
发布时间:2020-05-23 18:46:55 所属栏目:asp.Net 来源:互联网
导读:我有一个建立在ASP.NET 3.5 SQL Server 2005,使用sql成员身份提供程序,并可能形成身份验证。 由于我网站上的安全需求非常低,我想要一次身份验证,然后无限期地保持登录状态(不给用户选择)。 正在发生的是用户登录,保持登录的会话,然后下一次他们到达,他
|
我有一个建立在ASP.NET 3.5& SQL Server 2005,使用sql成员身份提供程序,并可能形成身份验证。 由于我网站上的安全需求非常低,我想要一次身份验证,然后无限期地保持登录状态(不给用户选择)。 正在发生的是用户登录,保持登录的会话,然后下一次他们到达,他们被注销。 如何获得登录持续? 这里是技术细节,我已经尝试了许多变化的持续时间。 Try
If Membership.ValidateUser(UserName.Text,Password.Text) Then
Security.UserManager.AuthenticateUser(UserName.Text)
If FormsAuthentication.GetRedirectUrl(UserName.Text,False) = "/default.aspx" Then
Try
'Custom Logic'
Catch Ex As Exception
'Custom Error handling'
End Try
Else
FormsAuthentication.RedirectFromLoginPage(UserName.Text,True)
End If
End If
Catch ex As Exception
RaiseEvent ExceptionThrown(New ApplicationException("An error occurred trying to log the user in after account creation.",ex))
End Try
Public Shared Sub AuthenticateUser(ByVal Username As String)
Dim Expiration As DateTime = DateTime.Now.AddMonths(3)
Dim authTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(Username,True,Expiration.Subtract(Expiration).TotalMinutes)
Dim EncryptedTicket As String = FormsAuthentication.Encrypt(authTicket)
Dim AuthCookie As New HttpCookie(FormsAuthentication.FormsCookieName,EncryptedTicket)
AuthCookie.Expires = Expiration
HttpContext.Current.Response.Cookies.Add(AuthCookie)
End Sub
Web配置: <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="GlobalConnString"
applicationName="/"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
/>
</providers>
</membership>
<authentication mode="Forms">
<forms timeout="1439200" name="SITENAME" loginUrl="/login.aspx" />
</authentication>
编辑:以下是客户端存储的cookie信息: Name ASP.NET_SessionId Value r4dz1555f1pdne45n1zrlkmg Host SITEADDRESS.com Path / Secure No Expires At End Of Session Name .ASPXAUTH Value 648767AC72A60DBA49650A361A2FA446BA992F792055EF5B488CADC95DF495315C1C577F1C8E67E67BD937A7AB6CC5DAED85D8D64E4ED7867FC0FC395F48FED7FB631033CE441DE85223E8B3EBAE616C Host www.SITEADDRESS.com Path / Secure No Expires Tue,09 Jun 2009 17:51:31 GMT Name ASP.NET_SessionId Value gn5pcymhfsnua455yp45wpej Host www.SITEADDRESS.com Path / Secure No Expires At End Of Session Name SITENAME Value 9610E8515F3DBC088DAC286E1F44311A20CB2BBB57C97F906F49BC878A6C6AC0B9011777402AEA130DCDC521EF4FBB3393DB310083F72EB502AE971183306C24F07F696B3695C67DD73166F1653DF52B Host www.SITEADDRESS.com Path / Secure No Expires Tue,20 Dec 2011 06:14:10 GMT 解决方法我认为你会更好地使用FormsAuthentication.SetAuthCookie方法,而不是自己编写很多代码。我相信您在web.config中的会员提供商设置可能与您在代码中提供的设置冲突,此外您还没有提供Cookie名称。 尝试以下: if (Membership.ValidateUser(userName,password))
{
FormsAuthentication.SetAuthCookie(userName,true); //Creates a cookie named "XXXAuth" - see settings in web.config below
}
结合web.config中的以下设置: <authentication mode="Forms">
<forms cookieless="UseCookies" loginUrl="~/SignIn.aspx" name="XXXAuth" slidingExpiration="true" timeout="432000"/>
</authentication>
<membership defaultProvider="XXXMembershipProvider">
<providers>
<clear />
<add name="XXXMembershipProvider" type="System.Web.Security.SqlMembershipProvider" applicationName="XXX" connectionStringName="XXX" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
如果您真的想创建一个无限期的登录期,只需将身份验证块中的“timeout”值更改为更长的值即可。我相信432000 = 5天。 如果您希望用户能够显式注销,只需调用以下方法来响应按钮单击(或任何): FormsAuthentication.SignOut(); 希望这可以帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – @ Html.BeginForm()如何工作?
- asp.net-mvc – 当在视图中使用ko时,ko.applyBindings给出错
- asp.net – 如何从下拉列表中选择“其他”选项时验证所需的
- asp.net-mvc – ASP.NET MVC中的小写URL
- asp-classic – 从头开始在Visual Studio 2010中创建经典的
- asp.net – asp:UpdateProgress – 保留换行符
- asp.net-mvc – 在Global.asax中注入依赖项
- 使用ASP.NET创建缩略图的最佳方法是什么?
- .net – 如何在ASP成员资格中使用LogOut
- asp.net – 如何调用一个特定的UpdatePanel加载后的客户端J
推荐文章
站长推荐
- asp.net-mvc – 具有Windows身份验证的MVC3 Web应
- asp.net – System.Web.UI.ViewStateException,无
- asp.net – 命名空间“Microsoft”错误中不存在类
- asp.net-mvc – 应用程序级排队/网站流量管理
- asp.net-mvc-3 – MVC3:不将属性映射到DB列的属
- asp.net-mvc – 在MVC2中使用区域
- 如何从ASP.NET Web服务实现自定义JSON序列化?
- 如何在.NET MVC应用程序中包含社交媒体共享?
- asp.net-web-api – 如何使用web api和模型绑定定
- webforms – ASP.NET Web窗体(4.5)强类型模型绑定
热点阅读
