我已經創建了登錄頁面,我想驗證用戶是否有權訪問。我已經完成了大部分工作,但只需要幾件事情在這裏: 1)如果用戶驗證,然後我想重定向到Home.aspx頁面 2)在用戶驗證後,我希望能夠保存用戶身份證在會話中,所以他們不必每次都登錄,如果他們被重定向到另一個頁面。 基本上,一旦他們成功登錄,他們應該能夠瀏覽應用程序中的其他頁面。謝謝。 這裏是後面的代碼:在Asp.net中創建登錄和驗證用戶
protected void ValidateUser3(object sender, EventArgs e)
{
int userId = 0;
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("Validate_User"))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Username", txtUID.Text.Trim());
cmd.Parameters.AddWithValue("@Password", txtPWD.Text.Trim());
cmd.Connection = con;
con.Open();
userId = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
}
switch (userId)
{
case -1:
logLbl.Text = "Username and/or password is incorrect.";
break;
case -2:
logLbl.Text = "Account has not been activated.";
break;
}
}
}
這裏是我的存儲過程:
ALTER PROCEDURE [dbo].[Validate_User]
@Username NVARCHAR(20),
@Password NVARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UserId INT, @LastLoginDate DATETIME
SELECT @UserId = UserId, @LastLoginDate = LastLoginDate
FROM myTable WHERE Username = @Username AND [Password] = @Password
IF @UserId IS NOT NULL
BEGIN
IF NOT EXISTS(SELECT UserId FROM [Main].[UserActivation] WHERE UserId = @UserId)
BEGIN
UPDATE myTable.[dbo].[UserProfile]
SET LastLoginDate = GETDATE()
WHERE UserId = @UserId
SELECT @UserId [UserId] -- User Valid
END
ELSE
BEGIN
SELECT -2 -- User not activated.
END
END
ELSE
BEGIN
SELECT -1 -- User invalid.
END
END
我不會說該帳戶尚未激活。這會讓任何發送垃圾郵件的人知道他們的用戶名無效。 – krillgar 2015-01-31 18:43:46
此外,你正在做的這個WebForms或MVC? – krillgar 2015-01-31 18:48:04
我正在使用WebForms .. – moe 2015-01-31 19:28:35