如果用户不存在或处于非活动/禁用状态,请注销asp.net用户

时间:2013-08-10 23:33:56

标签: asp.net

如何在检查用户是否存在于数据库中以及该帐户是否存在以检查其是否处于非活动状态或已禁用时,如何添加以下代码?如果其中任何一个都是真的..然后注销并将用户重定向到登录页面。

我遇到了一个问题,如果保存了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

感谢您的帮助。

2 个答案:

答案 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: