簡體   English   中英

密碼鎖定錯誤后如何解鎖ASPNETDB用戶帳戶?

[英]how to unlock an ASPNETDB user account after bad password count lockout?

我是新手,並使用ASPNETDB visual studio生成的用戶數據庫登錄控件

我在web.config中設置了最大錯誤密碼數為5,並測試了帳戶被鎖定的程度。 但我現在無法弄清楚如何解鎖帳戶。

這個問題出現在我的遠程托管網站上,所以這不是我可以用visual studio asp.net配置工具做的事情

一些c#代碼我可以在.cs page_load中運行,這將讓我輸入用戶名並解鎖它會很棒。 然后我可以制作一個表格,以便在我需要的時候輕松完成。

提前感謝您的幫助。

  MembershipUser usr = Membership.GetUser(userName);
  usr.UnlockUser();

手動,在數據庫中,轉到aspnet_membership表,將FailedLoginPasswordAttemptCount (類似名稱)設置為零,並將IsLockedOut設置為0(false)。

我們創建了一個自定義安全屏幕來管理我的幾個應用程序中的這些,或者您可以使用其他帖子中提到的組件。

HTH。

您是否嘗試更改Web.config以將鎖定時間延長到“更多嘗試”或類似的東西? 也許它會以這種方式讓你。

我不會為您了解任何CSharp代碼,但我使用的工具是Quality Data成員資格管理器控件 ,我可以通過Web表單管理成員資格(包括鎖定狀態)。

雖然這對您現在沒有幫助,但它將來會對您有所幫助。 此外,一旦您可以再次登錄(鎖定失效后),我建議您從Web.config中刪除鎖定信息,直到您准備好上線為止。 對您的應用程序進行廣泛測試必然會讓您一次又一次地被鎖定。

我有一些非常古老(丑陋)的代碼來自我幾年前建立的應用程序。 它幾乎是一個gridview控件的hack up,它使用aspnet_Membership_UnlockUser存儲過程作為delete命令,並將鍵設置為gridrow中被鎖定用戶的用戶名。 我甚至沒有使用C#。 這就是我所擁有的:

<asp:Label runat="server" ID="LblLockedUsers" Text="Locked Out Users:" />

<asp:SqlDataSource ID="SqlLockedUsers" runat="server" ConnectionString='<%$ ConnectionStrings:myConnString %>'
SelectCommand="selLockedOutUsers" SelectCommandType="StoredProcedure" DeleteCommand="aspnet_Membership_UnlockUser"
DeleteCommandType="StoredProcedure" />

<asp:GridView ID="GvLockedUsers" runat="server" AllowPaging="True" PageSize="5" AutoGenerateColumns="False"
DataKeyNames="UserName" DataSourceID="SqlLockedUsers" AllowSorting="True" GridLines="None"
Width="100%">
  <Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:LinkButton ID="LnkUnlock" CommandArgument='<%# Eval("UserName") %>' CommandName="Delete" runat="server">Unlock</asp:LinkButton>
      </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="UserName" HeaderText="User Name" ReadOnly="True" SortExpression="UserName" />
    <asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked Out" ReadOnly="True" SortExpression="IsLockedOut" />
    <asp:BoundField DataField="LastLockoutDate" HeaderText="Last Lockout" SortExpression="LastLockoutDate" ReadOnly="True" />
    <asp:BoundField DataField="failedPasswordAttemptCount" HeaderText="Failed Password Attempts" SortExpression="failedPasswordAttemptCount" ReadOnly="True" />
  </Columns>
  <EmptyDataTemplate>
    No users are locked out at this time.
  </EmptyDataTemplate>
</asp:GridView>

這是我寫的舊存儲過程,由gridview使用。 這一切都可以做得更好,但這是我當時所做的,它運作良好。

CREATE PROCEDURE [dbo].[selLockedOutUsers]

AS

SELECT 
m.ApplicationId as applicationId,
a.ApplicationName as applicationName,
m.UserId as userId,
u.UserName as UserName,
m.IsLockedOut as isLockedOut,
m.LastLoginDate as lastLoginDate,
m.LastLockoutDate as lastLockoutDate,
m.FailedPasswordAttemptCount as failedPasswordAttemptCount

FROM 
aspnet_Membership m 
JOIN aspnet_Users u ON m.UserId = u.UserId
JOIN aspnet_Applications a ON m.ApplicationId = a.ApplicationId

WHERE 
m.IsLockedOut = '1'

這是我修改過的aspnet_Membership_UnlockUser存儲過程。 如您所見,我刪除了應用程序名稱參數,並手動將其設置在proc中。 這樣我只需要將用戶名作為參數傳遞。

ALTER PROCEDURE [dbo].[aspnet_Membership_UnlockUser]
    --@ApplicationName                         nvarchar(256), --replaced with '/'
    @UserName                                nvarchar(256)
AS
BEGIN
    DECLARE @UserId uniqueidentifier
    SELECT  @UserId = NULL
    SELECT  @UserId = u.UserId
    FROM    dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m
    WHERE   LoweredUserName = LOWER(@UserName) AND
            u.ApplicationId = a.ApplicationId  AND
            LOWER('/') = a.LoweredApplicationName AND
            u.UserId = m.UserId

    IF ( @UserId IS NULL )
        RETURN 1

    UPDATE dbo.aspnet_Membership
    SET IsLockedOut = 0,
        FailedPasswordAttemptCount = 0,
        FailedPasswordAttemptWindowStart = CONVERT( datetime, '17540101', 112 ),
        FailedPasswordAnswerAttemptCount = 0,
        FailedPasswordAnswerAttemptWindowStart = CONVERT( datetime, '17540101', 112 ),
        LastLockoutDate = CONVERT( datetime, '17540101', 112 )
    WHERE @UserId = UserId

    RETURN 0
END

本教程可能有所幫助,您可能需要快速完成本系列:

解鎖和批准用戶帳戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM