Laravel 登陆认证如何区分大小写?

请问注册用户名为laravel用LARAVEL也能登陆,example@mail.com用example@MAIL.COM也是能登陆?不知道问题在哪里,validator的原因?要如何解决呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11
Summer

这是一个正常现象,大部分系统用户名大小写不敏感的。

如: https://github.com/aufree/https://github.com/Aufree/ 是一样的,能告诉我为什么这是一个问题吗?解决起来满费劲的

7年前 评论
Summer

邮箱域名的话,RFC 4343 标准 - Domain Name System (DNS) Case Insensitivity Clarification 规定了:

域名是不区分大小写的。

所以即使邮箱区分大小写也是错误的做法。

7年前 评论

@Summer 你这么一说好像这问题还没什么大不了...可是就是强迫症想让Laravel 和laravel是两个不同的用户,因为也有挺多站点是这种方案,刚试了试QQ邮箱,用example@QQ.COM是登不上去的。然后google一番找不到办法...

所以还是想请教以下可以从哪方面入手解决,虽然麻烦点,也没多大意义,还是想搞定他

问题应该出在laravel框架自身吧,不会是数据库问题

7年前 评论

数据库 我一般设计都是utf8_general_ci 这个是不区分大小写的 不知道你数据库是不是这个编码

7年前 评论

百度了下

一种方法是可以设置表或行的collation,使其为binary或case sensitive。在MySQL中,对于Column Collate其约定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写
7年前 评论

@Summer 你好,之前我提到的问题应该出在数据库上面0.0[尴尬.jpg],在mysql终端执行

SELECT id, name, email FROM users WHERE name='LARavel';
SELECT id, name, email FROM users WHERE email='example@MAIL.COM';

查询到的数据和

SELECT id, name, email FROM users WHERE name='laravel';
SELECT id, name, email FROM users WHERE email='example@mail.com';

是一样的,所以应该是数据库排列规则的问题。

7年前 评论

@awh521 好的,谢谢你的回复!茅塞顿开0.0,以前其实遇到过这个问题,因为挺久没写后台代码了,又忘记了,也没有写Blog的习惯

7年前 评论
Summer

@MonsterOOF Laravel 默认使用的 utf8_unicode_ci

file

7年前 评论

@Summer 我就说嘛,不像Sublime :smile:

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!