2013-03-13 66 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访问任何人都可以看到他们的)。相反,您应该在数据库中存储单向散列或校验和,然后在登录期间重新创建单向散列或从提交的密码中检查总和,并查看它是否与数据库中的内容匹配。

但你的问题,这听起来像你正试图验证相结合(验证你是你说你是谁)和授权(你被允许做你正在尝试做的)

这两个功能应该保持彼此分开。将它们组合成一个功能也是不好的做法,可能会导致很多困难。