• 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
  • 相关阅读:
    Python 3 Mysql 增删改查
    Python3 MySQL 数据库连接 -PyMySQL
    java 获取cookie
    Python 通过配置文件 读取参数,执行测试用例,生成测试报告并发送邮件
    Python 操作 Excel 、txt等文件
    SonarQube代码质量管理平台安装与使用
    Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件
    Python 解析Xml文件
    GO语言基础
    FileBeat
  • 原文地址:https://www.cnblogs.com/wancy86/p/ngdi.html
Copyright © 2020-2023  润新知