angular中service封装$http做权限时拦截403等状态及获取验证码倒计时、跨域问题解决
封装$http、做权限时拦截403等状态及获取验证码倒计时:
- 拦截接口返回状态
var app = angular.module('app'); app.factory('UserInterceptor', ["$q","$rootScope", "$location", function ($q, $rootScope, $location,$localStorage) {
return {
request:function(config){
config.headers["Authorization"] = 'Bearer ' + localStorage['token'];
var urlArray = config.url.split("/")
if(urlArray.indexOf("api") > -1 && config.method == "GET"){
if(config.url.indexOf("?") > -1){
config.url = config.url+"&time="+new Date().getTime();
}else{
config.url = config.url+"?time="+new Date().getTime();
}
}
return config;
},
responseError: function (response) {
switch(response.status)
{
case 401:
localStorage.clear();
$location.path("/login");
break;
case 403:
$location.path("/login");
break;
}
}
};
}]);response.status为返回状态码
- 封装$http
app.factory('ResourceGet',function($http,$q){
var service = {}
service.callBack = function(action,params){
var url = ' http://10.0.10.201:8080/';
var deferred = $q.defer();
$http({
method: 'GET',
url: url+action,
params: params
}).success(function(data){
deferred.resolve(data);
})
return deferred.promise;
}
return service
}); app.factory('ResourcePut', function ($http, $q) {
var service = {}
service.callBack = function ( action, params ) {
var url = 'http://10.0.10.201:8080/'
var deferred = $q.defer()
$http({
method: 'PUT',
url: url + action,
data: params,
headers : {'Content-Type': 'application/json; charset=utf-8'}
}).success(function (data) {
deferred.resolve(data)
})
return deferred.promise
}
return service
}) app.factory('ResourcePost', function ($http, $q) {
var service = {}
service.callBack = function ( action, params ) {
var url = 'http://10.0.10.201:8080/'
var deferred = $q.defer()
$http({
method: 'POST',
url: url + action,
data: params,
headers : {'Content-Type': 'application/json; charset=utf-8'}
}).success(function (data) {
deferred.resolve(data)
})
return deferred.promise
}
return service
}) app.factory('ResourceDelete', function ($http, $q) {
var service = {}
service.callBack = function (action, params) {
var url = 'http://10.0.10.201:8080/'
var deferred = $q.defer()
$http({
method: 'DELETE',
// headers : {'Content-Type': 'application/x-www-form-urlencoded'},
url: url + action
}).success(function (data) {
deferred.resolve(data)
})
return deferred.promise
}
return service
}) - 修改跨域问题
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}]); - 获取验证码倒计时
app.service('WaitSecond',function(){
var wait = 60;
var t = this;
this.waitTime = function(code){
if(wait == 0){
$("#"+code).html('获取验证码');
$("#"+code).removeAttr("disabled");
wait = 60
}else{
console.log(code);
$("#"+code).html(function(){
return wait + '秒'
}).attr('disabled','true');
wait--;
setTimeout(function () {
t.waitTime(code);
}, 1000);
}
}
})html:
<button id="code" ng-click="register.getCode('code')" class="ng-binding">获取验证码</button>
controller:
WaitSecond.waitTime(id);
5.统一接口定义全局变量
app.constant('apiImg','http://10.0.10.200:8080/SeeMeInterface/img/uploadImg')
angular中service封装$http做权限时拦截403等状态及获取验证码倒计时、跨域问题解决的更多相关文章
- 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)
前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...
- web项目中的跨域问题解决方法
一种是JSONP 一种是 CORS. 在客户端Javascript调用服务端接口的时候,如果需要支持跨域的话,需要服务端支持. JSONP的方式就是服务端对返回的值进行回调函数包装,他的优点是支持众多 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十二):解决跨域问题
什么是跨域? 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 如果一个请求地址里面的协议.域名和端口号都相同,就属于同源. ...
- iOS项目中获取验证码倒计时及闪烁问题解决方案
-(void)startTime{ __block int timeout= 59; //倒计时时间 dispatch_queue_t queue = dispatch_get_global_queu ...
- vue中axios访问Java后端跨域问题解决
问题背景: 前后端分离,前端选用Vue,后端选用Java,vue编译出的静态页面采用ngix发布,在前端访问后端时出现跨域问题. 解决方法: 跨域的问题解决方法有好多种,这里是通过服务端解决,以下是代 ...
- tp中session用来做权限方法 (缓解mysql压力)
http://www.thinkphp.cn/code/2617.html
- angular中使用canvas画布做验证码
//填充画布,五位随机数 drawNumber(): void { this.clearCanvas(); let ctx: CanvasRenderingContext2D = this.myGra ...
- Android中注册获取验证码倒计时按钮
public class CountDownTimerUtils extends CountDownTimer { private TextView mTextView; /** * @param t ...
- 用angular中的ng-repeat和ng-show来实现tab选项卡
虽然我们可以用angular中的路由来做tab选项卡,但是那会让我们建立很多的页面来引入,或者建立 <script type="text/ng-template" id=&q ...
随机推荐
- 2018-2019-2 20175209 实验一《Java开发环境的熟悉》实验报告
2018-2019-2 20175209 实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 1.使用JDK编译.运行简单的Java程序 cd 20175209进入2017520 ...
- Pandas系列(十一)-文件IO操作
数据分析过程中经常需要进行读写操作,Pandas实现了很多 IO 操作的API,这里简单做了一个列举. 格式类型 数据描述 Reader Writer text CSV read_ csv to_cs ...
- CMDB资产管理系统开发【day25】:需求分析
本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...
- solr的基础和安装
下载地址 http://archive.apache.org/dist/lucene/solr/ 推荐 http://www.apache.org/dyn/closer.lua/lucene/so ...
- ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
https://nanti.jisuanke.com/t/31462 题意 一个N*M的矩形,每个格点到其邻近点的边有其权值,需要构建出一个迷宫,使得构建迷宫的边权之和最小,之后Q次查询,每次给出两点 ...
- dpkg用管道批量删除deb
dpkg -l |grep deepin|awk '{print $2}'|xargs sudo dpkg -P
- 第四节:SignalR灵魂所在Hub模型及再探聊天室样例
一. 整体介绍 本节:开始介绍SignalR另外一种通讯模型Hub(中心模型,或者叫集线器模型),它是一种RPC模式,允许客户端和服务器端各自自定义方法并且相互调用,对开发者来说相当友好. 该节包括的 ...
- 第六节:深入研究Task实例方法ContinueWith的参数TaskContinuationOptions
一. 整体说明 揭秘: 该章节的性质和上一个章节类似,也是一个扩展的章节,主要来研究Task类下的实例方法ContinueWith中的参数TaskContinuationOptions. 通过F12查 ...
- css长度单位学习(em,rem,px,vw,vh)
绝对长度单位 绝对长度单位代表一个物理测量 [像素px(pixels)] 像素,为影像显示的基本单位,译自英文"pixel",pix是英语单词picture的常用简写,加上英语单词 ...
- [物理学与PDEs]第1章习题6 无限长载流直线的磁场
试计算电流强度为 $I$ 的无限长的直导线所产生的磁场的磁感强度. 解答: 设 $P$ 到直线的距离为 $r$, 垂足为 $P_0$, 则 ${\bf B}(P)$ 的方向为 ${\bf I}\tim ...