如何实现用户登录超时后,只输入密码,而不用二次登录

JellyBool

个人的第一反应,思路是这样的:

把 email 或者用户名存 session,登录超时的时候,用 session 取用户名和用户输入的密码一起验证就可以了吧

John Howard 回复 JellyBool

session在过期的时候,会清空所有值

perfectboook

我的想法是登录是一个状态是一个比较长的时间,比如一天过期,而如果半小时未操作视为超时。那么问题就简单了,做一个中间件,每次访问登录后的页面就判断下和上次操作是否超过半个小时,如果未达到,则更新session里面的最后操作时间,达到半个小时,则显示你这个页面。

John Howard 回复 perfectboook

基本解决了
用户登录使用session,当用户session过期后,会对所有session做清空处理,这样设置中间键是没有用的

我是这么做的:
1.用户登录使用Session,登录验证通过之后写入Cache(使用Redis驱动),设置Cache时间为1天。

Cache::set('useremail','useremail',1);

2.在登录页面方法判断是否有Cache的useremail值

if(Cache::has('useremail')){
    return view('user.lockscreen')
}

如果有值,就在锁屏blade页面读取之前写入的用户信息,然后提交新的验证方法(因为我做了验证码,锁屏页面不做验证码验证,只输入密码)

{Cache::get('useremail')}

如果有错误的地方,请指正。