目前在做會員登入權限驗證,有幾種想法不過感覺不太對,想請問有更簡單的寫法嗎?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT * FROM dbo.Member where username=? and password=?";
PreparedStatement pstmt = con.prepareStatement(SQL);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if(rs.next())
{
if(rs.getString(4))
response.sendRedirect("Member.jsp");
}
第一種我把會員資料都寫在同一個資料表中並設一個權限欄位,抓出值在比對權限丟到特定網頁,這樣管理者要去資料表把每個會員的權限欄位填值
<select>
<option>會員</option>
<option>高級會員</option>
</select>
還有另一種是不同會員建立不同table,在前端建立select讓使用者自己選擇身分,然後後端再用身分確認去不同table撈資料,不過這種沒再網路上看人做過
看過php驗證那篇,角色是再另外建立一個權限資料表,再由會員資料表去比對權限嗎??
因為這樣跟在會員資料裡設一個權限欄位好像一樣?
請問還有其他方式可以由登入判斷權限嗎?
上面兩種小弟都做過,其實都可以
前端部分,可以做成單一登錄,也可以單一登錄多個下拉選單選身分,也可以各個身分分開登錄。
後端部分,可以拆表也可以不拆,都能達到需求,
然後您提到的腳色權限資料表,這個拆與不拆其實只是正規化和不正規化的問題,
拆表最終還是要 Join 起來。
然後小弟分享一下現在習慣的做法,只講資料庫部分,前端主要看專案需求,
一張表只儲存帳號相關的資料,例如: 帳號、密碼、Email,一張表儲存身分,例如: 管理者、教師、學生,一張表儲存帳號之外的基本資料,例如: 學號、職員代碼、姓名、性別,如果各身分基本資料差異很多,那麼會另外獨立資料表,例如: 學生資料表、教師資料表。
以上是小弟的一些經驗,給大大參考