【发布时间】:2014-05-26 23:35:19
【问题描述】:
在登录窗口中,如果密码不匹配,则必须显示错误。 我已经完成了所有编码,但问题出在 Sql Server 密码列中,它不区分大小写,我不知道如何实现。
如果用户有密码abc09Fd,并且他输入了ABC09fD 格式的密码,SQL Server 会让他登录。如何解决这个问题。
我的表架构是
创建表用户
(
UserId int 身份约束 PK_UserID 主键,
RoleId int 约束 FK_Role_Users_RoleID 外键引用 Roles(RoleId),
用户名 nvarchar(256) 非空约束 U_Users_Username 唯一,
密码 nvarchar(256) 不为空
)
【问题讨论】:
-
查询是什么样的?我猜代码或查询本身在查询执行之前将凭据更改为小写。
-
一个有两个参数
@username和@password的存储过程 -
你真的不应该存储密码。看看存储密码的校验和。
-
或许使用hashbytes
-
得到了一个解决方案,因为 sql server 不区分大小写 uing collate 有很大帮助 SELECT * FROM users WHERE Username=@username and Password = @password COLLATE SQL_Latin1_General_CP1_CS_AS
标签: sql sql-server sql-server-2008