0

ストアド プロシージャから機能するログイン ページを開発しました。ログイン部分は適切に機能しますが、Web サイトは、ユーザーが安全なセクションにログインした後にどのページに移動するかを決定するロールで構成されます。データベース/テーブルで注目している列は次のとおりです。 Guid -0 列 Login_name -9 番目の列 Login_Pwd -10 番目の列 Role_ID -11 番目の列 / 1 または 2 の値を含む

私がやろうとしているのは、ログイン ページを取得して、Role_ID が 1 のユーザーと Role_ID が 2 のユーザーを区別することです。しかし、現在、ページにログインすると、SecurePage にリダイレクトされます。ユーザーが持っているロール ID に関係なく、.aspx。これについて何か方向性を教えてください。

これは私のストアドプロシージャです:

ALTER PROCEDURE [dbo].[Check_Users]

       @Login_name as varchar(100),
       @Login_Pwd as varchar(50)
AS
       /* SET NOCOUNT ON */

       SELECT * FROM SupplierCompany WHERE Login_name=@Login_name AND Login_Pwd=@Login_Pwd 
RETURN

これは私のログインボタンの背後にあるコードです:

Try
            Dim con As New SqlConnection(GetConnectionString())
            con.Open()

            Dim cmd As New SqlCommand("Check_Users", con)
            cmd.CommandType = CommandType.StoredProcedure

            Dim p1 As New SqlParameter("Login_name", username.Text)
            Dim p2 As New SqlParameter("Login_Pwd", password.Text)

            cmd.Parameters.Add(p1)
            cmd.Parameters.Add(p2)
            Dim rd As SqlDataReader = cmd.ExecuteReader()

            If rd.HasRows Then
                rd.Read()
                lblinfo.Text = "You are Authorized."
                FormsAuthentication.RedirectFromLoginPage(username.Text, True)
                Response.Redirect("securepages/SecurePage.aspx")
            Else
                lblinfo.Text = "Invalid username or password."
            End If

            'check the Role of the usre logging in
            While (rd.Read())
                Session("numrecord") = rd.GetValue(0).ToString()
                rd.GetValue(11).ToString()

                If rd.GetValue(11).ToString() = 1 Then
                    Response.Redirect("securepages/SecurePage.aspx")

                ElseIf rd.GetValue(11).ToString() = 2 Then
                    Response.Redirect("securepages/newShipment.aspx")

                End If
            End While

        Catch

        Finally
        End Try

..どんな支援も大歓迎です。

4

2 に答える 2

0

ログインしたユーザーをリダイレクトするコードをどこに定義しましたか?

コントロールはデフォルトで、Login成功すると宛先ページにリダイレクトしようとします。サーバーがそれを行う前に、イベントにフックしてOnLoggedInページをリダイレクトする必要があると思います。

それが機能しない場合の代替手段として、独自の「ログイン コントロール」を構築してみてください。ユーザーを検証するためにストアド プロシージャを使用しているため、ページにいくつかのテキスト ボックスをダンプしてそのようにすることは大きな飛躍ではありません。少なくとも、デフォルトの動作をオーバーライドすることについて心配する必要はありません。ASP.NET は、ユーザーのパスワードなどを検証するために使用できる一連の SP を提供していると思います。サーバーで確認してください (それらはすべてdbo.aspnet_*.

于 2013-09-04T16:24:45.430 に答える