请教登录程序设计?在线等待中!!!!!!!!!!!

海洋‘s 2002-05-29 10:51:18
一般情况下我们在数据库中有一个用户表:ID,Username,Password,CZQX等字段,所以在登录程序中使用这个表来进行登陆程序设计.
然而,这样数据的安全性受到了影响,所以,用户的要求是必须根据数据库授权用户来操作数据,也就是说,我在建好一个数据库后,增加了若干个操作用户,当然不同的用户具有的操作权限进行了限制.
在进行登录的时候必须正确的输入在数据库中授权的用户名和密码.
授权的用户只有DBA权限的人才能知道,请问,我在程序中如何实现以上用户要求的登录程序?我的代码已经写好了,可是总是有问题,我输入与当前数据库操作权限无关的用户名和口令也能登录到应用程序?
...全文
30 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaodeng 2002-05-30
  • 打赏
  • 举报
回复
其实,我觉得你的思路并不简便:你想省去在系统中对用户权限的配置而直接使用数据库的授权用户,实现数据库操作用户不同权限!这样必须对每个登陆的用户进行数据库的授权配置,太麻烦了!
到不如象“一剑飘香”说的那样,在系统中动态配置用户可以操作的模块,并且用户的角色也可以修改,比较灵活!
flyerlxg 2002-05-30
  • 打赏
  • 举报
回复
在用户输入完用户名及密码后按确定按钮后才进行数据库的连接,并根据连接后的反馈信息来进行判断,如果连接成功,则说明是授权用户,如果连接不成功,则说明是非授权用户,则提示后退出程序,不让其登录本软件。程序代码如下:

string UserId, UserPassword

UserId = Trim(sle_user.Text)
UserPassword = Trim(sle_pass.Text)

SQLCA.DBMS = "O73 ORACLE 7.3"
SQLCA.LogPass = UserPassword
SQLCA.ServerName = "@hhgd"
SQLCA.LogId = UserId
SQLCA.AutoCommit = False
SQLCA.DBParm = ""

connect using sqlca;

if sqlca.sqlcode <> 0 then
MessageBox("提示信息","非法用户,请输入正确的用户帐号!")
sle_user.text=''
sle_user.setfocus()
else
MessageBox("提示信息","欢迎使用本系统!")
close(parent)
open(w_main)
end if
doer_ljy 2002-05-30
  • 打赏
  • 举报
回复
一剑飘香的方法不错,要是一定要那么实现,后面的方式是比较可行的。
不要想在脸上数据库后作判断,因为还没有直到用户和密码时不是对的,之前,怎么能联上数据库呢?
xjbs 2002-05-29
  • 打赏
  • 举报
回复
数据库的用户名和口令是进行连接的通行证,只限定是否可以连接,可否进行DML操作,与开发的系统功能许可不同,系统功能许可要自行建表,在程序中调用进行动态授权~,
海洋‘s 2002-05-29
  • 打赏
  • 举报
回复
谢谢以上各位的大力帮助!
ttfyg(登陆者)你提供的代码中:
SELECT PASSWORD //retrive username and password
INTO :LS_pwd
FROM ADMIN_INFO
WHERE ADMIN_NAME=:ls_admin_name and password=:ls_admin_password;
主要是从一个表中读取用户信息,请问ADMIN_INFO是一个表吗?是自己建的呢,还是?????请仔细说明,谢谢!

**************************************************************
**************************************************************
我的问题说明:登陆用户名和口令是Oracle数据库的授权用户啊。...
pei 2002-05-29
  • 打赏
  • 举报
回复
数据库的用户只是对数据库操作的权限有所限制(比如修改,备份、删除、恢复等等),对是否可以进入你的程序应该是没关系的。具体怎么用,我也没做过,看来的其他高手帮你,我无能为力。
ttfyg 2002-05-29
  • 打赏
  • 举报
回复

string ls_admin_name,ls_admin_password ,ls_pwd //define local variables

ls_admin_name=trim(sle_admin_name.text)
ls_admin_password=trim(sle_admin_pwd.text)

SELECT PASSWORD //retrive username and password
INTO :LS_pwd
FROM ADMIN_INFO
WHERE ADMIN_NAME=:ls_admin_name and password=:ls_admin_password;

login_times=login_times+1
messagebox('',string(login_times))
if sqlca.sqlcode=0 then
gs_admin_name=trim(ls_admin_name)
gs_admin_password=trim(ls_admin_password)
close(parent) //close login_windows
sleep(1)
open(w_main) //open the main windows
else
//不正确,在3次以内重新输入,超过3次结束程序
if login_times>3 then
messagebox("警告","输入用户口令的次数太多!")
close(w_login)
disconnect;
else
messagebox('提示','用户名或密码不正确!请重输!',exclamation!,ok!)
sle_admin_name.text=""
sle_admin_pwd.text=""
sle_admin_name.setfocus()
return
end if

end if










海洋‘s 2002-05-29
  • 打赏
  • 举报
回复
大家有什么特好的建议和意见,或者已经设计好的源代码不妨贴出来,谢谢!
E-mail:oceanaut@163.com
topson_fj 2002-05-29
  • 打赏
  • 举报
回复
你这不是自己找累嘛,如果登陆用户名和口令是Oracle数据库的授权用户,那你要对所有的登陆用户进行授权处理,不然在用户登录到应用程序后会出现“表或视图不存在”的错误,具体可以在以下代码中实现:
string strUser, strPass

strUser = Trim(sle_user.Text)
strPass = Trim(sle_pass.Text)

SQLCA.DBMS = "O73 ORACLE 7.3"
SQLCA.LogPass = strPass
SQLCA.ServerName = "@hhgd"
SQLCA.LogId = strUser
SQLCA.AutoCommit = False
SQLCA.DBParm = ""

connect;

if sqlca.sqlcode <> 0 then
MessageBox("","Connect Fail!!")
else
MessageBox("","Connect Sucess!!")
end if
海洋‘s 2002-05-29
  • 打赏
  • 举报
回复
谢谢,我的目的是不用建表,直接使用数据库的授权用户登录。该怎么设计写代码????
jackygan 2002-05-29
  • 打赏
  • 举报
回复
建议:
建立四个表:
一.模块(存放你当前程序里可以分配权限的模块)
二.角色
三.角色对应的权限
四.用户
让管理员分配模块给用户,然后在输入密码时判用户是否有权可使用那一个模块,并且把没有权限的模块屏蔽掉。
海洋‘s 2002-05-29
  • 打赏
  • 举报
回复
operator是自己创建的一个表吗?

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧