1

vb に Web アプリケーションがあり、このアプローチを使用して、単純なライセンス契約のためにユーザーが同時ログインできないようにしています。

ユーザーが既に使用されているアカウントでログインすると、最初のユーザーがログアウトされます。次の状態のログインイベントにメッセージボックスまたはある種のjs確認ボックスを追加しようとしています:

This user account has been active in the last 20 minutes.
If someone else is using it, then logging in may possibly
compromise any report generation or activity.
Continue login?

コードは次のとおりです。

<asp:Login ID="Login1" runat="server"  DestinationPageUrl="~/Dashboard/Default.aspx" >
    <LayoutTemplate>
        <table border="0" cellpadding="0">
            <tr>
                <td align="right"><p><asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label></p></td>
                <td align="right">
                    <p><asp:TextBox ID="UserName" runat="server" Width="220" autocomplete="on" />
                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" Text="*"
                        ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="Login1" /></p>
                </td>
            </tr>
            <tr>
                <td align="right"><p><asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label></p></td>
                <td align="right">
                    <p><asp:TextBox ID="Password" runat="server" TextMode="Password" Width="220"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" Text="*"
                        ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="Login1" /></p>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2" style="color: red"><asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal></td>
            </tr>
            <tr>
                <td align="right" colspan="2"><asp:LinkButton CssClass="prettyButton" ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="Login1"  /></td>
            </tr>
        </table>
    </LayoutTemplate>
</asp:Login>

Private Sub Login1_LoggingIn(sender As Object, e As LoginCancelEventArgs) Handles Login1.LoggingIn

        Dim messagetext As String = "This user account has been active in the last 20 minutes." + Environment.NewLine + Environment.NewLine
        messagetext += "If someone else is using it, then logging in may possibly" + Environment.NewLine
        messagetext += "compromise any report generation or activity." + Environment.NewLine + Environment.NewLine
        messagetext += "Continue login?"

        Dim userNameTextBox As System.Web.UI.WebControls.TextBox = DirectCast(Login1.FindControl("UserName"), System.Web.UI.WebControls.TextBox)
        Dim currentUser As MembershipUser = Membership.GetUser(userNameTextBox.Text)

        If currentUser IsNot Nothing Then
            If currentUser.IsOnline Then

             '*****CONFIRMATION MESSAGE BOX TO GO HERE*****/
             Dim result = MessageBox.Show(messagetext , "Login Warning", MessageBoxButtons.YesNo)

             '* IF USER DECIDES NOT TO LOGIN:*/
             If result = DialogResult.No Then
                e.Cancel = True
             End If

             '* ELSE LOGIN CONTINUES AND ORIGINAL USER IS LOGGED OUT*/
            End If
        End If
    End Sub

Private Sub Login1_LoggedIn(sender As Object, e As EventArgs) Handles Login1.LoggedIn
        Dim userNameTextBox As System.Web.UI.WebControls.TextBox = DirectCast(Login1.FindControl("UserName"), System.Web.UI.WebControls.TextBox)
        SingleSessionPreparation.CreateAndStoreSessionToken(userNameTextBox.Text)
    End Sub

これで、Windows フォームをmsgbox()ローカルで使用できるようになり、すべてがうまく機能しますが、サーバーに配置すると、メッセージ ボックスが明らかに機能しなくなります。ClientScriptとを試しましScriptManagerたが、クライアント側のチェックがトリガーされないようです。

どんな助けでも大歓迎です。

4

1 に答える 1