改变学习日记登录方式余下的步骤

之前,已经把登录模式作了初步的改变。下面,计划一下后面的工作。

1、把重设密码纳入登录模式的改变中:

  1)、参考学习其他的程序的取回密码功能,决定运作方式;已完成,准备用jive3的方式;

  2)、设计用户取回密码的流程,尝试用ArgoUML0.20.alpha2进行建模,一方面可以完成设计,二方面可以验证argouml建模的可行性,取得大家的共识,还可以把这个模型提交给朋友们,请他们提意见和建议;

  3)、实现重设密码;

2、增加用户保存密码的功能,下一次登录可以不用输入密码;见http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=558&goalID=558&naviStr=a10ac0ad0改善系统的登录方式

和“用cookie保存用户密码登录流程http://www.learndiary.com/disDiaryContentAction.do?goalID=73”

3、实现1需要补充下面的知识:

  1)MD5加密,用于用户密码的加密(包括数据库中的和用户cookie中的);

  2)java中时间触发的使用Timer,用于重设密码失误期限的检测;

4、另外,是否考虑把邮件发送单独做成一个功能,在程序要发送各种邮件时都可以使用,例如,我在考虑是否单独增加对注册用户邮件的群发功能,或者把公告作为用户的默认订阅邮件。jive3的做法好像就是这样的。我前面作过这样的思考:

应该加入给注册用户发系统公告的功能

http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=1250&goalID=1250&naviStr=a10ac0ad0

    

学习jive的取回密码流程

  在这个问题走偏了。下了一个jivejdon2.5,却搞不定里面的中文化问题,本来里面没有取回密码的功能,可我还是尝试解决这个中文化问题。里面用的是is088591编码,在管理页面设置本地化和创建中文论坛,发中文帖子不行。问题暂时记在这里。先把既定的目标完成。我的环境是:Window2000+tomcat5+mysql4

  在jive3中有取回密码的功能,初步用导入导出sql文件在ultraedit比较的方法找到它存取回密码userID和Token的字段存在在表jiveuserprop中:

CREATE TABLE `jiveuserprop` (

  `userID` bigint(20) NOT NULL default '0',

  `name` varchar(100) NOT NULL default '',

  `propValue` text NOT NULL,

  PRIMARY KEY  (`userID`,`name`)

) TYPE=MyISAM;

数据:INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (2,'jive.passwordreset.token','1fgNz9LH') , (2,'jive.passwordreset.timestamp','1131889036888') , (2,'jive.passwordreset.last_sent','1131889036888') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

可以看到,它里面的token是没有加密的。

当用户用jive3发的重设密码的链接:http://localhost:8080/jive3/resetPassword!default.jspa?userid=5&token=2qSwKIgy 重设密码后,有关的字段值就被删除了,如下:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

jive3是隔了72小时取回密码失效,下面验证一下,发送密码后的值:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (2,'jive.passwordreset.last_sent','1133261729536') , (2,'jive.passwordreset.timestamp','1133261729536') , (2,'jive.passwordreset.token','ywE1T2Q0') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

把系统时间调后72小时以后,重设密码失败:

Forums - Reset Your Password

  Welcome, Guest 

 Login 

 Guest Settings 

 Help 

 

Please enter the userID and the token exactly as shown in the password reset email you have previously received. Please note that the token is case sensitive.

An error occurred validating the userID and token that was just entered. Please confirm the userID and the token was entered exactly as shown in the email and note that the token is case sensitive. If both are exactly as shown in your email and 72 hours have passed since the email was sent, you will have to start over.

Reset your password 

UserID:   

Token:

Invalid token   

New Password:   

Confirm Password:   

  

查看数据库中相应的字段:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

可以看出,字段值已经被删除了。

至此,jive3的取回密码实现的大概思路已经掌握了。

可怕的高烧

  昨晚,约凌晨1点,孩子开始说胡话。体温40.1度。赶紧送到医院急诊,打了针,吃了饭。今天下午,请假在家照顾小孩。体温仍未完全正常,看来今天晚上要小心。

  冬天,孩子的体温不要凭手摸,应该用温度计。

学习日记定位

  1、学习者面对信息的海洋,无所适从;

  2、整合个人的网络学习资源;

  3、提供到自己喜爱的学习资源的同步接口;

  4、个性化的指导,适合自己的才是最好的;

  5、集中理念,分散管理,灵活;

  6、人性化的学习家园。

解决了学习日记的3个不足之处,写了导航系统文章

  见:

  1、所有目标>>目标:公告牌的日记列表>>日记:系统使用及测试反馈中的“三个问题”;http://www.learndiary.com/disDiaryContentAction.do?goalID=1159&naviStr=a10a21

  2、所有目标>>我进行中的目标>>目标:建设“学习日记”我的日记列表>>选了3篇帖子发到七个java站 (0篇)http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=&goalID=1281&naviStr=a10a60a05  

选了3篇帖子发到七个java站

  为了介绍我们这个小小的开源项目,和增进交流,我把自己写的三篇帖子发到了以“java”为关键字搜索google的前七个中文java站。今天看有三个网站发表了我的两篇帖子。但是没有什么反馈。尤其是学习日记的导航系统的可行性还有待讨论。

  这三篇帖子分别是:

  1、学习日记网站动态导航技术探索 (0篇)http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=&goalID=1255&naviStr=a10a2167

  2、改變學習日記的字符集總結,查詢utf數據庫? (0篇)http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=&goalID=1242&naviStr=a10a21105

  3、一个国家软件开源事业的发展跟经济水平的关系 (0篇)

http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=&goalID=1262&naviStr=a10a244

  其中第3篇帖子没有一家发表,看来可能是水平太差,或是阐述得不详细,或是观点错误,以后再好好的把这个问题想一想。

积分和等级对鼓励学友的参与积极性有益

  昨天,我在一个java站点发了两篇文章,发现自己的等级居然由"新兵"变成了"高级程序员",虽然知道这个是假的,但还是心里挺高兴的。

  看来,在学习日记的未来版本中,应该加入具有自己特色的积分和等级系统了。

  设计这个系统要吸取设计学习日记导航系统的经验(事先多思考)和教训(高层的全面设计还是不够),要有一个长期稳定的设计,不要做完了又马上要改了。

  这里想起了网友jerry的一篇帖子(http://www.learndiary.com/disGoalContentAction.do?goalID=313&naviStr=a10ac0ae0):

 “ 标题: 学习日记系统的目的是培养学习者的兴趣  作者: jerry  创建时间: 2004-12-20 08:18:47  最近更新: 2004-12-20 08:18:47  编辑  删除 

内容

学习日记系统的目的是培养学习者的兴趣,只有学习者有兴趣,学习才会进行下去,如果让学习能像游戏一样进行就更好了。所以建议在新版学习日记中添加金钱功能,学习门派功能,让不同的人有机会在一起学习,而发表的学习日记最好符合一定的规范,使系统可以在学习者学习完成后将他的学习日记整理为一篇完整的教程。这样对学习者本身和想要学习的人来说都会有用。



  他的建议是非常中肯的。

  还有自己原来的一点想法(http://www.learndiary.com/disDiaryContentAction.do?goalID=383):

“ 日记标题 应该用一种方式使我们的学习平台的学习变得有趣  作者: admin  创建时间: 2004-11-06 12:19:00  最近更新: 2005-11-26 23:04:08  编辑 我要评论  

内容

    应该用一种方式使我们的学习平台的学习变得有趣,寓学于乐。有一句名言:书山有路勤为径,学海无涯苦作舟。我们应该把它改为:书山有路笑为径,学海无涯乐作舟。

    这种方式需要大家出主意。