AngularJs用户登录问题处理(交互及验证、阻止FQ处理)


Posted in Javascript onOctober 26, 2017

本文介绍了AngularJs用户登录的交互及验证、阻止FQ处理,具体如下

1. 静态页面搭建及ng的form表单验证实现:

<div class="register-frame-all">
  <div class="register-frame">
   <div class="register-msg">
    <i></i>
    <form name="loginForm" ng-submit="loginAction()">
     <div class="form-group">
      <div class="input-group">
       <span class="input-group-addon register-user"></span>
       <input autocomplete="off" type="number" class="form-control" placeholder="请输入手机号" required ng-model="loginData.loginName" name="loginName">
      </div>
      <div class="input-group">
       <span class="input-group-addon register-pwd"></span>
       <input type="password" class="form-control" placeholder="请输入密码" required ng-model="loginData.pwd" name="pwd">
      </div>
      <button type="submit" class="btn btn-block btn-danger"
        ng-disabled="!( (loginForm.loginName.$valid) && (loginForm.pwd.$valid) )">登录</button>
      <em></em>
     </div>
    </form>
   </div>
   <div class="register-pic" ng-style="registerRnum"></div>
  </div>
 </div>

2. 定义用户登录的控制器,在控制器中使用http服务处理登录接口:

$http({
    url:G.apiUrl_dl+'loginByPhone',
    method:'post',
    data:{
     'phone':loginName,
     'pwd':pwd
    },
    headers:{'Content-Type':'application/x-www-form-urlencoded'},
    transformRequest: function(obj) {
     var str = [];
     for(var p in obj){
      str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
     }
     return str.join("&");
    }
   }).success(function(data){
    // 登录成功后的操作...18     19    });

3. 如果登录成功后将用户的数据保存到cookie或session中 用$state服务进行跳转到指定的页面中:

// 登录成功
    if($scope.loginActionData.token){
     sessionStorage.setItem("token", $scope.loginActionData.token);
     sessionStorage.setItem("tsname", $scope.loginActionData.name);
     sessionStorage.setItem("rights", $scope.loginActionData.rights);
     sessionStorage.setItem("userId", $scope.loginActionData.userId);
     sessionStorage.setItem("departmentsId", $scope.loginActionData.departmentsId);
     sessionStorage.setItem("departmentsName", $scope.loginActionData.departmentsName);
     $state.go('index');
    }else{
     // 登录失败的弹框提示
     $('#loginAction').modal('show');
    }

4. 接下来就是防止用户跳过登录页面通过其他方法(如在地址栏直接输出地址进入页面)  的防FQ操作:

这个方法的操作我放在之前曾经说过得控制器最先执行的run方法中执行,每次进到一个页面之前都会进行检查该用户是否合法登录,如果不是合法登录我们将会让他跳转到登录页面

angular.module.run(['$rootScope','$state',function($rootScope,$state){
  $rootScope.$on('$stateChangeStart',function(event,toState){
   // 防止FQ
   if(!(sessionStorage.getItem("token")))$state.go('register');
  });
 }]);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
js控制CSS样式属性语法对照表
Dec 11 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
javascript对象的相关操作小结
May 16 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
原生JS实现不断变化的标签
May 22 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
node文字生成图片的示例代码
Oct 26 #Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 #Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 #Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 #Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 #Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
Oct 26 #Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 #Javascript
You might like
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
javascript实现拖放效果
2015/12/16 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
python列表的常用操作方法小结
2016/05/21 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python模拟斗地主发牌
2020/04/22 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
任意存:BOXFUL
2018/05/21 全球购物
Ejb技术面试题
2015/04/29 面试题
绩效工资实施方案
2014/03/15 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
作息时间调整通知
2015/04/22 职场文书