如何在检查用户是否存在于数据库中以及该帐户是否存在以检查其是否处于非活动状态或已禁用时,如何添加以下代码?如果其中任何一个都是真的..然后注销并将用户重定向到登录页面。
我遇到了一个问题,如果保存了aspx auth cookie ..但是用户帐户被删除或设置为非活动状态..用户仍然可以登录。
Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
If User.Identity.IsAuthenticated Then
Response.Redirect("~/homepage")
End If
End Sub
感谢您的帮助。
答案 0 :(得分:1)
试试这个
If User.Identity.IsAuthenticated Then
MembershipUser currentuser = Membership.GetUser()
If currentuser IsNot Nothing And currentuser.IsApproved = True Then
Response.Redirect("~/homepage")
End If
End If
答案 1 :(得分:1)
你的问题::
I am running into an issue that if the aspx auth cookie is saved .. but the user
account is deleted or set inactive .. the user can still login.
即使用户被删除, IsAuthenticated
也会为用户返回true。发生这种情况是因为它只检查仍在其系统上的身份验证cookie。
您需要删除Signout功能中的身份验证Cookie,如下所示。例如,你提出了一个注销按钮。在Logout按钮中单击添加以下代码。
Protected Sub btnLogOutAction_Click(sender As Object, e As EventArgs)
FormsAuthentication.Signout()
' check your own supplied cookie name. Default name is .ASPXAUTH
If Request.Cookies(".ASPXAUTH") IsNot Nothing Then
Dim myCookie As New HttpCookie(".ASPXAUTH")
myCookie.Expires = DateTime.Now.AddDays(-1.0)
myCookie.Domain = "test.com"
Response.Cookies.Add(myCookie)
End If
End Sub
2。)问题::
to see that the user exists in the database, and if the account does exist to
check if it is inactive or disabled
这个问题有很多可能的情况。让我们看看其中3个
CASE I::
如果用户已登录但在几分钟内未激活,默认情况下,20分钟后,ASP.NET将清理用户会话,如果用户会话,则会触发{{1}可以在Session_End
中处理的事件。然后,您可以将此用户标记为在数据库中处于非活动状态,或者根据要求执行您要运行的任何代码。
Global.asax
我用来将Case II::
设置为False以禁用用户。
IsApproved
现在您可以将其检查为:
Dim user As MembershipUser = Membership.GetUser("Yourusername")
If user IsNot Nothing Then
user.IsApproved = False
Membership.UpdateUser(user)
End If
Dim check As New SqlCommand("SELECT Count(*) FROM [Users] WHERE Username='" & username & "'", Connect)
Dim exist As Integer = CInt(check.ExecuteScalar())
' greater than zero means user exists in database
If exist > 0 Then
' Now check if user is disabled OR not approved
Dim user As MembershipUser = Membership.GetUser("Yourusername")
If user IsNot Nothing Then
If user.IsApproved = False Then
FormsAuthentication.RedirectToLoginPage()
End If
End If
End If
使用ProfileManager类
使用以下示例代码作为参考。我们可以使用ProfileManager类方法检查用户自使用日期以来是否处于非活动状态。阅读MSDN
CASE III: