一个 SQL 同时验证帐号是否存在、密码是否正确
来源:互联网 发布:有mac版本的网游 编辑:程序博客网 时间:2024/06/05 08:33
近日偶尔看到一个很巧妙的 SQL 技巧,一个简单的 SQL 同时验证帐号是否存在、密码是否正确。之前从未曾想过这么做,也未曾见过别人这么做。虽是奇技淫巧,却真正所谓构思巧妙。如果用来面试考考别人,真的能够难倒一大片兄弟。好东西不敢独享,特公开与大家同乐。
SELECT CASE WHEN p.encrypted_password =? THEN 1 ELSE 0 END
FROM tm_app_user u, tm_app_user_credential p
WHERE u.app_user_uuid = p.app_user_uuid
AND (LOWER(u.user_sign_in_nm) = ? OR LOWER(u.email) = ?)
解释:
a. 如果用户名不存在,则查询结果是无数据
b. 如果用户名存在,而密码不正确,则返回 0
c. 如果用户名存在,而密码正确,则返回 1
之所以把密码单独用一个表保存,是因为用户的其他信息(用户名、邮件、电话)与密码是两种不同性质的东西,系统架构师决定分开保存,有助于提醒程序员这种差别: 用户的其他信息可以查看,密码不能查看;用户的其他信息更改时可以看到更改前的数据,密码更改时不能看到更改前的数据;修改用户密码与修改用户其他信息,是两个不同页面。
虽说程序员普遍有“文人相轻”的毛病(读书人互相瞧不起),但看到这个 SQL,不能不让人佩服。
我已经将这种技巧,用于我们的折桂单点登录系统(http://zheguisoft.com)。下一 release 版本将会用上。
第一,这个 SQL 难道有性能问题?问题在哪里?
第二,后台代码和前台提示,难道是一一对应的?后台代码对不同的结果,写不同的日志,前台统一提示“用户名或密码不正确”,难道不可以?
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 【Openfire】验证用户输入密码是否正确
- java email 验证用户名密码是否正确
- 用sqlmap验证是否存在sql注入
- 【c#】验证SQL语法是否正确
- easyui同时验证账户格式和ajax是否存在
- 验证用户登录时用户名和密码是否正确及如何防止sql注入
- 验证用户名是否存在
- 验证用户名是否存在
- 验证SQL帐户密码是否有效
- sql 如何判断一个表是否存在
- 验证邮箱 是否正确
- 验证身份证号码是否正确
- 验证日期是否正确
- 验证身份证号是否正确
- 验证身份证是否正确
- 验证车牌号是否正确
- How to Bring Your Future Closer to You 如何让自己更接近梦想
- WinForm 创建与读写配置文件
- Linux 设置oracle1521端口
- RFC简介
- ocp听课总结之1——课程简介
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 实现MapFragment(一)
- 铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
- linux python守护进程编写
- 实现MapFragment(二)
- 并查集
- 【DuiLib入门基础】九宫格corner属性详细解释
- Qt 中打开玻璃化DWM效果
- 开发人员本身是90分的测试人员