JAVA中如何实现一个用户超过三个月未登录则失效 20C

如题,本人想要制作一个用户管理系统,需要给除开超级管理员之外的所有管理员设置一个“超过三个月时间未登录则账号失效,无法登录系统”方法。有没有大神帮我解决!

10个回答

记录用户最后登录或者是退出(建议记录登录时间,因为有些用户退出不一定主动调用,可能是因为session失效造成的)的时间,现在的时间和最后登录或者是退出的时间相比较,超过你所限定的时间,就直接给用户提示,或者是跳转到你所想要跳转的界面。

有两种方式:
1、用户表中增加状态和最近登录日期,用户每次登录时,更新最近登录日期,然后使用自动任务,每天定时扫描用户表,计算当前时间和最近登录日期的时间差,超过三个月,则将状态置为无效
2、用户表增加状态和最近登录日期,用户没次登录的时候,先检查用户状态,如果为失效,则直接返回账户失效;如果未失效,则计算当前时间和最近登录日期的时间差,超过三个月,则将状态置为无效,返回账户已失效;如果没有超过三个月,则更新最近登录日期

wzl19870309
luxy_wang 回复柯毅: 建议你用第二中方式,用户登录的时候再去判断
2 年多之前 回复
wzl19870309
luxy_wang 回复柯毅: /** * 获取两个日期之间的月份(不包含结束日期) * @param startDate 开始日期 * @param endDate 结束日期 * @return */ public int getMonthsBetweenTwoDate(Date startDate,Date endDate){ return Months.monthsBetween(new LocalDate(startDate), new LocalDate(endDate)).getMonths(); }
2 年多之前 回复
qq_34394725
柯毅 loginTime和logoutTime我都设置了,但是小弟水平有限,不知道怎么在代码里实现这个三个月判定的方法,还是必须在数据库里写一个Job? 有代码指点就最好了 谢谢!
2 年多之前 回复

这个好像不难,你在用户表加个字段(最后一次登录的时间),当一个用户视图登录的时候,先拿最后一次登录的时间跟现在的时间相比较,如果超过3个月,
把这个账号标记为无效账号,然后返回给用户账号无效的信息提示

应该是在数据库加创建这个用户的时间createTime,还要再加上当前登录时间CurrentLoginTime,每一次登陆都要把网络时间赋值给CurrentLoginTime,这样保证CurrentLoginTime每一次都是最近登录的时间,用当前时间和创建时的时间比较,再用最近登录时间和创建时间比较,如果两个时间的差值大于3个月就令用户失效.

  1.  在web容器中设置(此处以tomcat为例)
    

    在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置:
    [html] view plain copy



    30



    Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间。

  2.  在工程的web.xml中设置
    

    [html] view plain copy


    15

  3.  通过Java代码设置
    

    session.setMaxInactiveInterval(30*60);//以秒为单位

三种方式优先级:1 < 2 <3

转自:http://blog.csdn.net/hu_shengyang/article/details/8021435

数据库加个字段做判断

有很多的答案都可以直接找到的,没必要提问,而且提问的效率也很低

给管理员表加个最后登录时间字段,然后做个定时器每天凌晨跑。 拿系统现在时间和最后登录时间比较, 超过三个月直接设置这个管理员为账号失效,无法登录系统

HttpSessionListener 可以监听每一个session的创建和销毁事件, 这样就可以记录和更新用户的登录/退出时间,每次登录的时候拿当前时间与前一次退出时间比较,如果超时就不允许登录。

这个功能最好的实现方式就是初次登录用页面cookie存储账户、密码免登陆,设置时长为三个月;具体代码实现需要查询资料!!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!