如何将密码放入sql表中以防删除

时间:2013-06-22 12:22:48

标签: sql sql-server database tsql

我最近问过,但起初并没有找到。我做了4个步骤。我想学习另一种方法。

首先,创建了dbo.login表(将授权的admin和哈希密码放入其中)

第二,创建sp_password_entry过程以插入登录表临时密码

第三,创建了func_password_comparison函数来比较临时用户的哈希密码和哈希密码admin

最后,在我的表上创建了tr_delete_control触发器来指定是管理员还是其他未授权删除的人

这是代码;

----我的桌子---

create table login

(

authorised_name varchar(30) not null,
password varchar(50) not null

)

---我插入的管理员帐号和密码---

insert into dbo.login values('admin',HASHBYTES('md5',convert(varchar(50),'myPassWord'))) 

---我的临时用户程序将他的密码插入登录表---

create procedure sp_password_entry
@pass varchar(30)
as
begin
insert into dbo.login values('temp',HASHBYTES('md5',convert(varchar(50),@pass))
end

---我要检查的功能是管理员?? -

create function func_password_comparison()
returns int
as
begin
declare @admin_pass varchar(50),
@temp_pass varchar(50)
set @admin_pass=(select password from dbo.login where authorised_name='admin')
set @temp_pass=(select password from dbo.login where authorised_name='temp')
if(@admin_pass=@temp_pass)
return 1
return 0
end

---我的触发器控制删除允许的user.at结束它也删除插入的临时值和密码---

create trigger tr_delete_control
on dbo.myTable
after delete
as
begin
declare @temp int
set @temp=dbo.func_password_comparison()
if exists(select * from deleted)
begin
if(@temp=1)
begin
print 'delete is permitted'
end
else
begin
raiserror('with the sp_password_entry procedure insert a password or you inserted wrong password',10,1)
rollback
end
delete from dbo.login where authorised_name='temp'
end
else if not exists(select * from deleted)
begin
delete from dbo.login where authorised_name='temp'
end
end

当用户写

sp_password_entry 'wrongPassWord'
delete from dbo.myTable

显示错误并从登录表中删除插入的密码

或只写

 delete from dbo.myTable

它显示删除触发错误。如果他写

 sp_password_entry 'myPassWord'
 delete from dbo.myTable

显示'允许删除'并删除行,同时从登录表中删除插入的密码

它运行良好但是这个操作有更多有用且更简单的代码吗?提前谢谢!!

0 个答案:

没有答案