zoukankan      html  css  js  c++  java
  • angularjs的config和interceptor

    config

    这个要从config的正确使用说起,也许你想在config某个provider的时候注入$rootscope, 但是这是不允许的,我们细看下面的特性

    session注入

    每个请求自带sessionid,要实现这种功能就要用到interceptor,而不是用config配置ng-resource往里面添加参数 - config是在服务加载前提供配置参数个性化服务实例

        
        angular.module("secu.services")
    
        .factory('HttpInterceptor', ['$q', '$state',
            function($q, $state) {
                return {
                    request: function(config) {
                        // config.headers['x-session-token'] = localStorage.getItem('sessionid');
                        if (localStorage.getItem('sessionid')) {
                            //1. post data
                            // config.data=config.data||{};
                            // config.data['session_id'] = localStorage.getItem('sessionid');
                            
                            //2. get parameters
                            config.params=config.params||{};
                            config.params['session_id'] = localStorage.getItem('sessionid');
                        }
                        // console.log('config: ',config);
                        return config;
                    },
                    requestError: function(err) {
                        return $q.reject(err);
                    },
                    response: function(res) {
                        if (res.data && res.data.code) {
                            switch (res.data.code) {
                                case '000':
                                    return res
                                case '100':
                                    alert(res.data.msg)
                                    return res
                                case '200':
                                    console.log(res.data.msg)
                                    $state.go('login')
                                    break
                            }
                        }
    
                        return res
                    },
                    responseError: function(err) {
                        if (-1 === err.status) {
                            // 远程服务器无响应
                        } else if (500 === err.status) {
                            // 处理各类自定义错误
                        } else if (501 === err.status) {
                            // ...
                        }
                        return $q.reject(err);
                    }
                };
            }
        ])
    
        .config(['$httpProvider',
            function($httpProvider) {
                $httpProvider.interceptors.push('HttpInterceptor');
            }
        ])
    
    

    ### x-session-token in header 现在多数网站都是用token作为认证,而非cookiebase的sessionid
  • 相关阅读:
    使用CSS3的@media来编写响应式的页面
    转帖 移动端h5页面不同尺寸屏幕适配兼容方法
    转 关于HTML5中meta name="viewport" 的用法 不同分辨率手机比例缩放
    转帖 移动前端开发之viewport的深入理解
    Python学习---字符串操作
    Python学习---基础篇
    Qt托盘程序
    MySQL常用语句
    C++模式学习------适配器模式
    C++模式学习------原型模式
  • 原文地址:https://www.cnblogs.com/wancy86/p/ngdi.html
Copyright © 2011-2022 走看看