精华内容
下载资源
问答
  • vue获取session中

    万次阅读 2019-09-09 18:30:50
    letmyName=JSON.parse(sessionStorage.getItem("userInfo"));

    let myName=JSON.parse(sessionStorage.getItem("userInfo")); 

    展开全文
  • Vue中POST请求无法获得后端Session

    千次阅读 2020-03-09 20:26:01
    在使用Vue和SpringBoot进行前后端分离开发时,涉及到请求跨域的问题。 看了一些教程后在后端编写了WebMvc的配置类: @Configuration public class MyWebMvcConfig implements WebMvcConfigurer { /** * 配置跨域,...

    在使用Vue和SpringBoot进行前后端分离开发时,涉及到请求跨域的问题。

    看了一些教程后在后端编写了WebMvc的配置类:

    @Configuration
    public class MyWebMvcConfig implements WebMvcConfigurer {
        /**
         * 配置跨域,允许localhost:8080访问
        */
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowCredentials(true)
                    .allowedHeaders("*")
                    .allowedMethods("*")				
                    .maxAge(1800)
                    .allowedOrigins("http://localhost:8080");
        }
    }
    

    前端则使用axios进行网络请求。这里封装了一个post请求。

    import axios from 'axios'
    
    const baseURL = 'http://localhost:8081'
    
    export function postData(url, config) {
      const instance = axios.create({
        baseURL,
        timeout: 5000 //5秒
      }) 
      //响应拦截器,只把返回结果中的data返回
      instance.interceptors.response.use(
        res => {
          return res.data
        }, 
        err => {
          console.log(err)
      })
      return  instance.post(url,config)
    }
    

    这样子便可以进行跨域请求了。

    但是,当后端响应一个get请求,往session中保存了一些数据;然后前端再往后端发送一个post请求,请求处理时想要取出刚才保存在session中的数据时却取出了null,震惊。

    比如在用户登录这个场景中,前端在渲染登录页面时以get方式向后端发送了一个获取验证码的请求。

    <img :src="vcUrl" @click="updateVerifyCode" alt="">
    
    vcUrl: 'http://localhost:8081/verifyCode?time='+new Date()
    

    SpringBoot后端的controller中响应这个请求,并把验证码保存在了session中。

        @GetMapping("/verifyCode")
        public void verifyCode(HttpSession session, HttpServletResponse resp) throws IOException {
            //生成验证码和验证码图片
            VerificationCode code = new VerificationCode();
            BufferedImage image = code.getImage();
            String text = code.getText();
            //将验证码存入session
            session.setAttribute("verify_code", text);
            //System.out.println(session.getAttribute("verify_code"));
            VerificationCode.output(image,resp.getOutputStream());
            System.out.println("[验证码]:"+text);
        }
    
    

    然后用户便填写登录表单,提交到后端;首先进行校验的便是验证码,便理所应当地取出刚才存进session的验证码进行比对。

    postData('/login', this.loginForm).then(resp => {
    	//省略成功回调
    })
    
    	@PostMapping("/login")
        public SysResult loginHandler(@RequestBody JSONObject object, HttpSession session) {
            //取出参数
            String email = object.getString("email");
            String password = object.getString("password");
            String code = object.getString("code");
            //验证验证码
            if(code != session.getAttribute("verify_code")){
                return SysResult.error("验证码错误");
            }
            User user = userService.login(email, password);
            //验证用户信息
            if(user == null){
               return SysResult.error("用户或密码错误");
            }
    		//省略。。。
            return SysResult.ok("登录成功", userDto);
        }
    

    然后session中的值取出是null !!

    极度疑惑,便又写了一个controller,这次是用get方式,

        @GetMapping("/hello")
        public SysResult hello(HttpSession session){
            String verify_code = (String) session.getAttribute("verify_code");
            return SysResult.ok("ok",verify_code);
        }
    

    居然取到了!!!为何会出现这种情况呢?百思不得其解。

    于是在网上疯狂冲浪,然而也没有得到答案,在浏览那些个网页时,虽是没有遇到和我一般问题的人,不过我却发现神通广大的网友们在解决其他一些跨域问题的时候,不仅会在SpringBoot中配置跨域,axios也会配置。

    于是乎,我本着玄学解决bug的原则,配置了一下axios的全局配置。说来也不多,就一句:

    axios.defaults.withCredentials = true
    

    重新运行程序,发送请求,定睛一看控制台,

    妙啊
    ( ̄_, ̄ )妙啊~

    今天又玄学解决了一个问题,心情舒畅。

    展开全文
  • Vue 如何监听session值的变化

    千次阅读 2020-01-18 11:29:45
    如何监听session值的变化 首先在在main.js给Vue.protorype注册一个全局方法 //main.js Vue.prototype.resetSetItem = function (key, newVal) { if (key =='collapse') { // 创建一个StorageEvent事件 var ...

    如何监听session值的变化
    首先在在main.js给Vue.protorype注册一个全局方法

    //main.js
    Vue.prototype.resetSetItem = function (key, newVal) {
        if (key =='collapse') {
            // 创建一个StorageEvent事件
            var newStorageEvent = document.createEvent('StorageEvent');
            const storage = {
                setItem: function (k, val) {
                    sessionStorage.setItem(k, val);
      
                    // 初始化创建的事件
                    newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
      
                    // 派发对象
                    window.dispatchEvent(newStorageEvent)
                }
            }
            return storage.setItem(key, newVal);
        }
     }
    

    在写入的页面

     this.resetSetItem('item','值');
    

    在需要监听的页面

     window.addEventListener('setItem', ()=> {
                var val = sessionStorage.getItem('item');
                console.log(val)
            })
    
    展开全文
  • 今天在调试vue前端请求后端数据的时候,两个ajax请求,获取后端两个接口同一个session值不一致。 前端部分代码vue(这是对我而言有问题的代码): 以下代码,经常获取同一个session设置值不一致 var vm = new ...

    欢迎关注我的公众号:零零糖,让一个贫穷的程序员不靠打代码也能吃饭~

    零零糖公众号

     

     

    今天在调试vue前端请求后端数据的时候,两个ajax请求,获取后端两个接口同一个session值不一致。


    前端部分代码vue(这是对我而言有问题的代码):

    以下代码,经常获取同一个session设置值不一致

    var vm = new Vue({
       el:'#app',
       data:{},
    
       beforeCreated:function(){},
    
       created:function(){
          this.get_login_info();
       },
    
       mounted:function(){ 
          this.get_goods_list();
       },
    
       methods:{}
    }

    修改后,两个ajax放一块了,请求后端获取session值一直正确。

    var vm = new Vue({
       el:'#app',
       data:{},
    
       beforeCreated:function(){},
    
       created:function(){
          //两个ajax放一块,后端获取同一个session值正确
          this.get_login_info();
          this.get_goods_list();
       },
    
       mounted:function(){},
    
       methods:{}
    }

    不知是否有人遇到过,记录之。

    时间有限,暂不深究。

    完。

    欢迎关注我的公众号:零零糖,让一个贫穷的程序员不靠打代码也能吃"软"饭~
    零零糖公众号

     

    展开全文
  • vue axios加上这段代码 axios.defaults.withCredentials = true; 完整代码 axios.interceptors.request.use( config => { config.headers.token = "aaa" config.baseURL = "http://localhost:8081/" axios....
  • 1.参考文章   ...   本地测试环境下貌似访问不到。 报错:Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response. ...
  • vue 获取HTTP Session传值后端

    万次阅读 2018-12-27 15:52:57
    HTTP Session 在浏览器 --设置--高级--内容设置--cookie--查看所有cookie与网站数据--里请求的地址里   其中内容为加密内容,是base64加密。 其作用保持持续通话,可以用在后台仿重复提交。...
  • django后端传给前段一个json对象,vue接收后如何保存在session中,并且可以在其他的页面从session中拿出对象,用这个对象里面的属性 后端传值 以上是django项目,后端返回给前段的一个json对象 前段获取 利用 JSON....
  • 利用vuex和vue-session实现数据共享 1、安装vuex npm install vuex 2、vuex安装完成之后,在src文件下建个store文件夹下建个index.js main.js文件下注册: new Vue({ el: "#app", router, store, render: (h) =...
  • 原理:session会话存储在服务器上,过期时间为30分钟,在login操作时,给session设置,在springmvc拦截器进行登录拦截,判断session是否存在,存在放行,不存在请求报错,返回401,前端捕获异常401,进行页面的...
  • spring boot获取session为null问题

    万次阅读 2019-10-18 14:26:20
    问题描述: 我在登陆的时候,登陆成功后将name存进了session,然后在获取个人信息时取出session...两个session不同,即session.getId()的不同 根本原因: 涉及到前后端跨域问题 解决方案: 本人前端是vue项目,...
  • vue 获取服务端session存储到本地

    千次阅读 2019-07-05 16:09:00
    标签栏前面的VUE图标 --> <!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> --> < title > ww title > < script > // 定义一个变量然后截取发送请求时的session 比方说...
  • vue项目实时获取sessionStorage的

    千次阅读 2021-01-21 16:47:18
    当设置sessionStorage的时,发现已经发生变化,但是组件却不能实时获取到已改变的。 解决方案: 1.在main.js文件添加以下代码: /*实时获取sessionStorage的*/ Vue.prototype.resetSetItem = function ...
  • SpringSecurity+Vue前后端分离使用验证码,后端将生成的验证码存入到session中,但是在进行验证码验证时获取session中的验证码时null的,后端生成的验证码确实是生成好了。问题就是存不进session中。 2. 解决问题 ...
  • 一般是在前端先get请求获取后端图片,并且将生成的验证存储到session中,然后前端再post请求登陆时,将form表单的验证码传递到后端,然后后端再取出session中的验证码进行比较验证,但是由于跨域问题,在最后一步...
  • var usernameC = ${sessionScope.SESSION_USER_PROFILE.accountId};var caseId = "${caseId}";var taskId = "${taskId}";var uuid = "${uuid}";后台控制层代码:@GetMapping(value = {URI_FILE_CASE_PANEL_AUDI, URI...
  • 记录一个很小但又搞得我蛋疼的问题:我在登陆之后将token和用户数据存到session当中,可当我在后面的接口取值时,为null 解决过程: 接下来在调试的时候发现每次请求sessionid不一致,期初我还是以为是跨域造成的...
  • vue怎么获取服务器的session传递给springboot项目?一. 获取服务器session步骤1. 服务器jsp代码2. 客户端jsp代码:![在这里插入图片描述]...
  • vue中如何获取token,并将token写进header

    万次阅读 多人点赞 2018-03-15 16:12:25
    在login.vue中通过发送http请求获取token//根据api接口获取token var url = this.HOST + "/session"; this.$axios.post(url, { username: this.loginForm.username, password: this.loginForm.pa...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,284
精华内容 2,513
关键字:

vue获取session中的值

vue 订阅