php 记住密码自动登录

2020-03-27编程41

在一些业务要求中"登录"这一操作是需要简化的. 这个功能非常简单, 但同时也非常危险(暴露用户名和密码).

最简单(也是最容易暴露)的记住密码是使用cookie将用户名与密码保留存在客户浏览器中, 下次登录时Javascript将cookie的用户名与密码填入表单中进行登录(或ajax传输用户名密码进行登录).

能直接填入表单(ajax请求)进行登录, 那么cookie保存的信息特别容易暴漏或被盗.

安全的做法是:

当用户登录成功, 服务器返回一个token数据.

客户端接收到返回信息时, cookie将token数据保存在客户端.

如果登录超时需要重新登录时, 程序优先判断客户端是否存在合法的token数据, 如果有生成session记录登录状态.

当然也可以每次用户请求时判断token的合法性, 更新session保持登录状态.

token是MD5(sha1)加密的字符串.

程序安需要生成token, 并在数据库中插入此数据.

客户端每次请求时, 程序会根据传输过来的token检查数据库表中是否存在并查出对应用户数据生成(更新)session.

表机构:

CREATETABLEIFNOTEXISTS´xx_token´(

´id´int(11)UNSIGNEDNOTNULLAUTO_INCREMENT,

´token´varchar(32)NOTNULLDEFAULT''COMMENT'',

´user_id´int(11)unsignedNOTNULLDEFAULT'0'COMMENT'用户ID',

´create_time´int(11)unsignedNOTNULLDEFAULT'0'COMMENT'创建时间',

PRIMARYKEY(´id´),

UNIQUEKEY´token´(´token´),

UNIQUEKEY´user_id´(´user_id´)

)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT'记住密码';

生成token:

$token -ip() . request()-server('HTTP_USER_AGENT') . $user-id);