起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5614|回复: 9

[分享] 记住密码功能

  [复制链接]

25

主题

75

帖子

143

积分

初级会员

Rank: 2

积分
143
QQ
发表于 2016-1-28 16:28:35 | 显示全部楼层 |阅读模式
本帖最后由 yyddydy 于 2016-1-28 16:35 编辑

记住密码本可以用localStorage实现 但是安卓手机退出程序后localStorage会失效 所以用到了sqlite 那么问题又来了 浏览器不支持sqlite所以我写了下面的例子 供参考 有问题可以给我留言
  1. define(function(require){
  2.         var $ = require("jquery");
  3.         var justep = require("$UI/system/lib/justep");
  4.         
  5.         
  6.         var Model = function(){
  7.                 this.callParent();
  8.                 this.db;
  9.         };



  10.         Model.prototype.resetbtnClick = function(event){
  11.                 this.comp("username").val("");
  12.                 this.comp("pwd").val("");
  13.         };

  14.         Model.prototype.loginbtnClick = function(event){
  15.                
  16.                
  17.                
  18.                 var username=this.comp("username").val();
  19.                 var pwd=this.comp("pwd").val();
  20.                 if(username=="zy"||username=="aaa"){
  21.                         if(pwd=="zy"){
  22.                                 //如果选择了记住我
  23.                                 if(this.comp("remembercb").val()){
  24.                                         try{
  25.                                                 //更新sqlite中的用户名密码
  26.                                                 this.db.transaction(function(tx) {
  27.                                                         tx.executeSql("UPDATE rememberuser SET username = ?, pwd = ?, isremember = ? WHERE id=1;", [ username, pwd ,1 ], function(tx, res) {
  28.                                                         }, function(e) {
  29.                                                                 alert("ERROR: " + e.message);
  30.                                                         });
  31.                                                 });
  32.                                         }catch(e){
  33.                                                 //如果不支持sqlite比如浏览器用localStroage存储
  34.                                                 localStorage.username= username;
  35.                                                 localStorage.pwd= pwd;
  36.                                                 localStorage.remember= 1;
  37.                                         }
  38.                                 //没有选择记住我
  39.                                 }else{
  40.                                 
  41.                                         try{
  42.                                                 //更新sqlite中的用户名密码
  43.                                                 this.db.transaction(function(tx) {
  44.                                                         tx.executeSql("UPDATE rememberuser SET username = ?, pwd = ?, isremember = ? WHERE id=1;", [ "", "" ,0 ], function(tx, res) {
  45.                                                         }, function(e) {
  46.                                                                 alert("ERROR: " + e.message);
  47.                                                         });
  48.                                                 });
  49.                                         }catch(e){
  50.                                                 //如果不支持sqlite比如浏览器用localStroage存储
  51.                                                 localStorage.username= "";
  52.                                                 localStorage.pwd= "";
  53.                                                 localStorage.remember= 0;
  54.                                         }
  55.                                 }
  56.                         
  57.                                 justep.Shell.showPage("$UI/yim/home.w");
  58.                         }else{
  59.                                 this.comp("pwderr").show();
  60.                         }
  61.                 }else{
  62.                         this.comp("unerr").show();
  63.                 }
  64.         };
  65.         Model.prototype.modelLoad = function(event){
  66.                 var me = this;
  67.                 document.addEventListener("deviceready", onDeviceReady, false);
  68.                 // sqlite设备就绪
  69.                 function onDeviceReady() {
  70.                         me.db = window.sqlitePlugin.openDatabase({
  71.                                 name : "yim.db"
  72.                         });
  73.                         me.db.transaction(function(tx) {
  74.                                 tx.executeSql('CREATE TABLE IF NOT EXISTS rememberuser (id integer primary key, username text, pwd text , isremember integer)');
  75.                         });
  76.                 }
  77.                 //默认插入一条数据
  78.                 try{
  79.                         var totalcount=0;
  80.                         //判断表里有几条数据
  81.                         this.db.transaction(function(tx) {
  82.                                 tx.executeSql("select count(*) as count from rememberuser", [], function(tx, res) {
  83.                                         totalcount=res.rows.item(0).count;
  84.                                         //alert(totalcount);
  85.                                 }, function(e) {
  86.                                         alert("ERROR2: " + e.message);
  87.                                 });
  88.                         });
  89.                         //如果表里没有数据 填一条
  90.                         this.db.transaction(function(tx) {
  91.                                 if(totalcount<1){
  92.                                                 tx.executeSql("INSERT INTO rememberuser (isremember) VALUES (?)", [ 0 ], function(tx, res) {
  93.                                         }, function(e) {
  94.                                                 alert("ERROR: " + e.message);
  95.                                         });
  96.                                 }
  97.                         });
  98.                         //查询数据库判断是否记住了密码
  99.                         this.db.transaction(function(tx) {
  100.                                 tx.executeSql("select id,username,pwd,isremember from rememberuser limit 1;", [], function(tx, res) {
  101.                                        
  102.                                                 if(res.rows.item(0).isremember){
  103.                                                         me.comp("username").val(res.rows.item(0).username);
  104.                                                         me.comp("pwd").val(res.rows.item(0).pwd);
  105.                                                         me.comp("remembercb").set({"checked":true,"value":1});
  106.                                                 }
  107.                                 });
  108.                         });
  109.                 }catch(e){
  110.                         //不支持sqlite情况
  111.                         
  112.                         if(localStorage.remember==1){
  113.                                 this.comp("username").val(localStorage.username);
  114.                                 this.comp("pwd").val(localStorage.pwd);
  115.                                 this.comp("remembercb").set({"checked":true,"value":1});
  116.                         }
  117.                         return false;
  118.                 }
  119.                
  120.         };
  121.         return Model;
  122. });
复制代码


25

主题

75

帖子

143

积分

初级会员

Rank: 2

积分
143
QQ
 楼主| 发表于 2016-1-29 22:39:35 | 显示全部楼层
这个不够智能 http://bbs.wex5.com/forum.php?mod=viewthread&tid=85885
看这篇有更好的解决方式
回复 支持 1 反对 0

使用道具 举报

25

主题

75

帖子

143

积分

初级会员

Rank: 2

积分
143
QQ
 楼主| 发表于 2016-1-28 16:29:42 | 显示全部楼层
其实写个记住密码用这么多代码不太合理 但是我也想不到其他的好的办法去解决
回复 支持 反对

使用道具 举报

73

主题

202

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
QQ
发表于 2016-2-26 09:46:56 | 显示全部楼层
这个name=“yim.db”,是不是要新建个什么东西的?最后我插了1条数据,account也显示为1了,但是   alert(res.rows.item(0).username);这个为啥为null?


回复 支持 反对

使用道具 举报

73

主题

202

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
QQ
发表于 2016-2-26 12:15:29 | 显示全部楼层
我就用了这个方法,退出后一样失效啊!!!
回复 支持 反对

使用道具 举报

19

主题

81

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
发表于 2016-5-4 16:27:28 | 显示全部楼层
为了记住密码写么多代码不合理,我有一个极简单的办法:
1、在用户数据表中增加一个标记列如:gpass,如果点击记住密码就标记为1
2、用户ID输入完后调用change事件,同时查找此ID的gpass标记,如果为1则取出密码自动填入密码框。这样算下来10行代码都可搞定。
回复 支持 反对

使用道具 举报

27

主题

77

帖子

450

积分

中级会员

Rank: 3Rank: 3

积分
450
QQ
发表于 2016-5-13 14:19:58 | 显示全部楼层
glassy2000 发表于 2016-5-4 16:27
为了记住密码写么多代码不合理,我有一个极简单的办法:
1、在用户数据表中增加一个标记列如:gpass,如果 ...

这个账户很容易被盗吧,你这样设置后,只要知道用户名就可以登录了
回复 支持 反对

使用道具 举报

718

主题

2841

帖子

5657

积分

论坛元老

Rank: 8Rank: 8

积分
5657
QQ
发表于 2016-5-14 13:17:20 | 显示全部楼层
是的,这样太不安全了
WEX5初学者,欢迎初学者交流
QQ:597558229
tel:15857336322
回复 支持 反对

使用道具 举报

62

主题

153

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
QQ
发表于 2017-9-3 16:59:08 | 显示全部楼层
glassy2000 发表于 2016-5-4 16:27
为了记住密码写么多代码不合理,我有一个极简单的办法:
1、在用户数据表中增加一个标记列如:gpass,如果 ...

要是密码是加密的呢
回复 支持 反对

使用道具 举报

发表于 2017-9-4 11:08:08 | 显示全部楼层
瓦尔登湖 发表于 2017-9-3 16:59
要是密码是加密的呢

可以加密后的密码存储在本地
http://docs.wex5.com/wex5-ui-question-list-2015/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-7 04:34 , Processed in 0.137047 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表