|
|
|
ขอตัวอย่างวิธีการส่งค่าผ่าน URL Patameter หน่อยครับ |
|
|
|
|
|
|
|
คือผมจะส่ง ชื่อผู้ใช้ (Username) , พาสเวิร์ด (Password) , ประเภทผู้ใช้ (RoleID) ผ่าน URL Parameter ได้อย่างไรครับ (อันนี้ทำเล่นๆนะครับ อยากลองส่งค่าดูเฉยๆ)
ตอนแรกผมใช้ Session แล้วพี่เค้าก็บอกว่ามัน "ไม่ปลอดภัย"
ให้ลองเปลี่ยนมาใช้ URL Parameter??? หรือ User_Code ด้วย Session???
มันคืออะไรหว่า???
สรุปแล้วทั้ง URL Parameter??? และ User_Code ด้วย Session??? มันคืออะไรเหรอครับ แล้วใช้งานอย่างไร?
อีกปัญหาหนึ่งคือ ประเภทผู้ใช้ (RoleID) ครับ
คือตอนใ้ช้ Session ผมก็ส่งค่าไปได้แค่ Username และ Password ซึ่งรับค่ามาจาก Textbox
ผมจะดึงค่า RoleID จากในเบส ส่งไปด้วยได้อย่างไรครับ
Code (C#)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class LoginPage : System.Web.UI.Page
{
String strConn = ConfigurationManager.AppSettings["strConnection"];
SqlConnection objConn = new SqlConnection();
DataTable dt = new DataTable();
ClsDataBase cdb = new ClsDataBase(); // New Object ClsDataBase
String dbName = "strConnection";
String err = "";
String strSQL;
private void Connection()
{
try
{
if (objConn.State == ConnectionState.Open)
{
cdb.CloseDB(objConn, ref err); // ClsDataBase CloseDB
}
strSQL = "select * from LoginTable";
objConn = cdb.OpenDB(dbName, ref err);
dt = cdb.Execute2DataTable(strSQL, objConn); // ClsDataBase Execute2DataTable
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
try
{
strSQL = "SELECT Username, Password, RoleID FROM LoginTable WHERE Username=@Username AND Password=@Password";
objConn = cdb.OpenDB(dbName, ref err); // ClsDataBase OpenDB
SqlCommand cmd = new SqlCommand(strSQL, objConn);
cmd.Parameters.AddWithValue("@Username", txtUsername.Text.Trim());
cmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim());
SqlDataReader dtReader = cmd.ExecuteReader(); // ClsDataBase ExecuteReader
try
{
if (dtReader != null && dtReader.HasRows == true)
{
if (dtReader.Read())
{
Session["User"] = dtReader["Username"].ToString();
Session["Pass"] = dtReader["Password"].ToString();
Session.Timeout = 10;
}
dtReader.Close();
Response.Redirect("Index.aspx");
}
else
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallJs", "alert('Username หรือ Password ไม่ถูกต้อง');", true);
}
}
finally
{
objConn.Close();
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
protected void Button1_Click2(object sender, EventArgs e)
{
txtUsername.Text = "";
txtPassword.Text = "";
}
}
Tag : .NET, Ms SQL Server 2008, Web (ASP.NET), C#, VS 2010 (.NET 4.x)
|
ประวัติการแก้ไข 2011-05-23 16:18:01 2011-05-23 16:18:21 2011-05-23 16:18:38 2011-05-23 16:19:49 2011-05-23 16:20:31
|
|
|
|
|
Date :
2011-05-23 16:17:35 |
By :
Marcuz |
View :
3952 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Session ปลอดภัยกว่า URL น่ะครับ
|
|
|
|
|
Date :
2011-05-23 17:45:06 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
วิธีที่ให้ระบบรับรู้ว่า Session ที่ทำงานอยู่นี้
ได้ผ่าน Authentication หรือยัง
วิธีหนึ่งที่ผมเห็นหลายๆ คนนิยมใช้คือ
สร้าง Session Key User ขึ้นมา
Code (VB.NET)
Session["User"] = dtReader["Username"].ToString();
เป็นอันรู้ว่า ถ้า Session["User"] มีค่าเก็บไว้อยู่ ก็แสดงว่าผ่าน Authentication แล้ว
แต่ไม่ต้องเก็บ Session Key Password ตามตัวอย่างนี้หรอกครับ
Code (VB.NET)
Session["Pass"] = dtReader["Password"].ToString();
แล้วก็อย่าง Mr.Win กล่าวไว้
คือเราจะไม่ส่ง User และ Password ผ่าน URL Parameter
มันดูเลวร้ายมาก
|
|
|
|
|
Date :
2011-05-23 18:14:35 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ
|
|
|
|
|
Date :
2011-05-23 21:27:54 |
By :
Marcuz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|