2013-03-13 103 views
-1

存儲過程我有一個user表與這些列:進行登錄

user_id 
    user_name 
    password 
    createdate 
    full_name 
    location 
    dep_id 
    user_type 

和我有一個登錄表單,其中包括用戶名和密碼。

在此我創建一個splogin

create procedure splogin 
    @User_Name nvarchar(50), 
    @Password nvarchar(50) 
as 
    Select * from [User] 
    Where User_Name = @User_Name 
    and Password = @Password 

然後我想知道這是usertype是提到在登錄表單或用戶配置文件的形式?

並通過登錄表單,任何用戶都可以登錄

即經理,總監和exectuive其批准文件 和簡單的用戶whcih只能上傳文件

+4

請不要在數據庫中存儲明文密碼。 http://plaintextoffenders.com/about/請考慮使用新的網頁簡單的會員提供商。這真的很好,很好的想法......它*應該*與現有的數據很好。 – spender 2013-03-13 20:05:58

+0

密碼在* – 2013-03-13 20:07:21

回答

0

這聽起來像你想使用的用戶對象執行的安全性。如果是這樣的話。我會使用你的'Select'語句返回來創建一個用戶對象。

Basic類

class UserObj 
UserName 
Location 
DepartmentID 
UserType 

然後存儲在會話。像這樣:

Session["CurrentUser"] = UserObj; 

然後,只要你想執行驗證。將對象從會話中取出。

UserObj currentUser = (UserObj)Session["CurrentUser"]; 

,看看它是否有一個有效的用戶類型

if(currentUser.UserType == "Director") 
{ 
    //run this code 
    //hide objects 
    grid_BusinessStuff.visible = false; 
} 
+0

usertype是登錄表單還是用戶配置文件? – 2013-03-13 20:18:58

+0

請你能解釋你的代碼...不明白你的答案 – 2013-03-13 20:19:38

2

首先,它被認爲是不好的做法,在數據庫中存儲密碼(你的團隊與DB訪問任何人都可以看到他們的)。相反,您應該在數據庫中存儲單向散列或校驗和,然後在登錄期間重新創建單向散列或從提交的密碼中檢查總和,並查看它是否與數據庫中的內容匹配。

但你的問題,這聽起來像你正試圖驗證相結合(驗證你是你說你是誰)和授權(你被允許做你正在嘗試做的)

這兩個功能應該保持彼此分開。將它們組合成一個功能也是不好的做法,可能會導致很多困難。