?? pass.java
字號:
/**
* 魏朝東 清華同方 Oct. 26 2001 *
* permission Package Version 1.0 *
**/
package permission;
import java.sql.* ;
import java.util.*;
public class Pass {
public HashSet hsAuth=new HashSet();
//散列表hsAuth為用戶擁有的權限模塊名
private String Realname=""; //真實姓名
private String Username=""; //用戶名
private String Password=""; //密碼
private int Department_id,Personnel_id; //用戶角色id,個人id
int auth=0; //密碼正確,則Auth=1,否則為0
int num = 0; //登錄次數 最多為三次
public void setPass (String pusername,String ppasswd,String IPAddr,String Sessionid) throws ClassNotFoundException,SQLException
// 參數 (用戶名,密碼,IP地址,session產生的ID)
{
PreparedStatement prepare; //創建PerparedStatement實例
ResultSet rs; //創建記錄集實例
String sql; //要執行的sql語句
DBConnect dbc = new DBConnect();
//創建DBConnect實例,用于數據庫連接
Connection conn=dbc.getConn();//建立數據庫連接
sql = "select * from manager where username = ?";
//在操作員信息表查詢該用戶是否為系統操作員
prepare = conn.prepareStatement(sql);
prepare.setString(1,pusername);
rs = prepare.executeQuery();//執行SQL語句
if(rs.next())
{
if(ppasswd.equals(rs.getString("passwd")))
//如果密碼與用戶輸入的密碼相等
{
Username = pusername;
Password = ppasswd;
Department_id = rs.getInt("department_id"); // 角色ID
Personnel_id = rs.getInt("personnel_id"); // 帳號ID
Realname = rs.getString("realname"); //真實姓名
num = 0;
auth=1; //密碼正確,則Auth=1,成功登錄
sql = "insert into log (username,ipaddr,regtime,success) VALUES (?,?,now(),1)";//在日志信息表中添加信息
prepare = conn.prepareStatement(sql);
prepare.setString(1,Username);
prepare.setString(2,IPAddr);
}
else//如果密碼錯誤
{
sql = "insert into log (username,ipaddr,regtime,success,sessionid,errPass) values (?,?,now(),0,?,?)";
//在日志信息表中添加信息
prepare = conn.prepareStatement(sql);
prepare.setString(1,pusername);
prepare.setString(2,IPAddr);
prepare.setString(3,Sessionid);
prepare.setString(4,ppasswd);
num ++;
auth = 2; //密碼錯誤 auth = 2;
}
prepare.executeUpdate(); //執行日志update語句
}
else
{
num ++;
auth=0;//用戶名及密碼錯誤auth=0
}
if(auth == 1)//讀取操作權限,加到HASHTABLE中
{
sql = "select * from authority where department = ?";
//在權限信息表中讀取相應角色的權限值
prepare = conn.prepareStatement(sql);
prepare.setInt(1,Department_id);
rs = prepare.executeQuery();
hsAuth.clear();//先清空散列表
for(int i=0;rs.next();i++)
{
hsAuth.add(rs.getString("spec"));//spec為操作權限關鍵字
}
}
if(num >=3){ //是否連續三次輸錯密碼
return;}
rs.close();
}
public HashSet getAuth()//返回權限散列表
{
return (hsAuth);
}
public int getNum()//得到密碼錯誤次數
{
return (num);
}
public String getDepartment_id()//返回角色類型
{
return(String.valueOf(Department_id));
}
public int getAuth(String authname)//判斷用戶是否有authname模塊權限
{
if (hsAuth.contains(authname))
{
return(1);
}
else
return(0);
}
public int getPass(){//密碼是否正確
return(auth);
}
public String getUsername()//返回用戶名
{
return(Username);
}
public String getPassword()//返回密碼
{
return(Password);
}
public void logout()//退出系統時的數據處理
{
//以下是清空登錄數據
Realname=null;
Username=null;
Password=null;
Department_id = 0 ;
num = 0;
auth=0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -