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
  • 相关阅读:
    开源Jabber(XMPP) IM服务器介绍
    ejabberd、jabber、jabberd、xmpp辨析
    分布式与集群的区别
    浅谈Javascript事件模拟
    理清javascript的相关概念 DOM和BOM
    js基础学习第一天(关于DOM和BOM)一
    处理机调度和死锁
    C++11 之 " = delete "
    小数的二进制表示
    二进制数的插入
  • 原文地址:https://www.cnblogs.com/wancy86/p/ngdi.html
Copyright © 2011-2022 走看看