美文网首页
laravel 中,在不做 return 返回的情况下,coo

laravel 中,在不做 return 返回的情况下,coo

作者: 云龙789 | 来源:发表于2018-10-19 22:48 被阅读10次

laravel 的cookie 是在头部的,我们使用的时候,一般需要在 response() 之后只用,例如 return response('ok')->withCookie('cookie_name','cookie_value');
可是很多时候我们如果不想在返回的时候设置 cookie 又改怎么办?我并没有找到一个最优的方案,可是我找到了一种解决方式。如果哪位读者有更好的办法,希望能够及时告知。谢谢

  • 思路
    我本来试图查找设置 cookie 的原装方法,并使用它设置 cookie 。
    return response('ok')->withCookie('cookie_name','cookie_value');
追踪源码到 withCookie($cookie)
withCookie()

打印传递的 $cookie 参数的到结果 cookie_name
$cookie = call_user_func_array('cookie', func_get_args());
之后得到的 $cookie 是一个 cookie 对象 Symfony\Component\HttpFoundation\Cookie

图片.png
由于以上结果,我不知道应该怎么直接给 cookie 赋值

因为 laravel 的 cookie 是在头部赋值的,所以,可以这样赋值 header('set-Cookie cookie_name:cookie_value');,
但是这样有个问题是, \Cookie::get('cookie_name') 获取不到值。原因是这种方式取值,是取到的加密后的值,解密字符串 cookie_value 是没有值的,所以得到的是空。那么我们可以不解密 cookie_name ,添加到 $except 数组,再次打印,即可看到 cookie_value 这个值

图片.png

其实如果在设置 cookie 值的时候,如果可以直接加密, \Cookie::get('cookie_name') 就可以直接获取到值

还有一种方式是直接使用全局变量 _COOKIE 也是可以直接取到原值的_COOKIE['cookie_name']

还有一种方式是 \Cookie::queue(name,value,time);
这种方式可以 \Cookie::get(name) 直接取值

        /** 意思是在下一个 response 返回的时候,带上这个 cookie
         * Queue a cookie to send with the next response.
         *
         * @param array $parameters
         * @return void 
         * @static 
         */ 
        public static function queue($parameters = null)
        {
            \Illuminate\Cookie\CookieJar:: ($parameters);
        }
        

相关文章

  • laravel 中,在不做 return 返回的情况下,coo

    推荐阅读COOKIT原理 laravel 的cookie 是在头部的,我们使用的时候,一般需要在 response...

  • laravel 构造函数无法return

    在用laravel写对外接口时发现laravel构造函数中是无法return,如果要使用return的话就需要用中...

  • Python函数作用域

    函数返回值 省略return语句的情况下默认: return None 可以有多个return语句,但是只会执行其...

  • 函数2

    1.函数的返回值 在python中,每个函数都有返回值。当函数体中存在return语句的时候,返回值为return...

  • Vue中的data为什么要用return{}括起来

    vue中的data用return返回 为什么在大型项目中data需要使用return返回数据呢? 答:不使用ret...

  • 看看NodeJS中间件

    随便看了篇文章,以前写的Laravel项目所用到的composer包,用于return之前的格式化处理和规范返回数...

  • 08 函数(补充)

    1.函数的返回值 python中每个函数都有返回值,返回值就是return后面的值,如果函数中没有return,那...

  • 九、密码比较

    在realm中 认证成功后会返回 return new SimpleAuthenticationInfo(use...

  • Python常用函数--return 语句

    在Python教程中return 语句是函数中常用的一个语句。 return 语句用于从函数中返回,也就是中断函数...

  • ruby的方法返回一个nil值

    因为在ruby中,所有的方法都有一个返回值。通过return这个关键字返回。如果没有return,则把方法中最后一...

网友评论

      本文标题:laravel 中,在不做 return 返回的情况下,coo

      本文链接:https://www.haomeiwen.com/subject/epxpzftx.html