Rumah > pembangunan bahagian belakang > tutorial php > laravel框架,在客户端没有存cookie时如何处理比较好?

laravel框架,在客户端没有存cookie时如何处理比较好?

WBOY
Lepaskan: 2016-06-06 20:43:33
asal
1498 orang telah melayarinya

请问laravel框架,如果客户端那边没有cookie机制,只能靠sid来保持用户状态.这种情况下怎么弄才能保证session正常工作呢?

我现在项目直接在最前面弄个sid session_id($sid); 处理的,虽然能行,不过真的很烂啊. 头疼

例如做一个手机应用的api接口,这时候可能需要用户保持登录状态.可是我的安卓程序员说他们那边不想做cookie(说做不了).没办法只能在登录后把sid传给他们就当cookie,然后每次发请求过来的时候用sid开启session session_id($sid); 这样才能保证使用.

有没有更优雅写的方式处理这样的问题呢?这么做真的太难看了.而且可能会带出其他问题的.

回复内容:

请问laravel框架,如果客户端那边没有cookie机制,只能靠sid来保持用户状态.这种情况下怎么弄才能保证session正常工作呢?

我现在项目直接在最前面弄个sid session_id($sid); 处理的,虽然能行,不过真的很烂啊. 头疼

例如做一个手机应用的api接口,这时候可能需要用户保持登录状态.可是我的安卓程序员说他们那边不想做cookie(说做不了).没办法只能在登录后把sid传给他们就当cookie,然后每次发请求过来的时候用sid开启session session_id($sid); 这样才能保证使用.

有没有更优雅写的方式处理这样的问题呢?这么做真的太难看了.而且可能会带出其他问题的.

写一个BaseController.php

<code class="lang-php"><?php class BaseController {

    public function __construct() {
        // 把请求参数session_id载入session
        Session::setId(Input::get('session_id'));
    }
</code></code>
Salin selepas log masuk

之后的Controller继承BaseController即可

<code class="lang-php"><?php class UserController extends BaseController {

    public function __construct() {
        parent::__construct();
        // 判断登陆
        $this->beforeFilter('@filterAuth');
    }

    public function filterAuth($route, $request) {
        $user = Auth::user();
        if (is_null($user)) {
            // 未登录
            return Redirect::guest('user/login');
        } else {
            // 已登录
        }
    }
</code>
Salin selepas log masuk

记得每一次请求之后都把session_id Session::getId()注册到模版里面,或者附带在URL上面

laravel的session提供了多种存储方式,如果本地不支持cookie的话是可以存储到服务器端的数据库上的

具体设置在 app/config/session.php中将 'driver' => 'database',即可
在migrate中添加session数据库,具体做法 php artisan session:table

手机端也支持Cookie啊。怎么会不支持?难道是wap站- -#

URL全局参数吧- -#

叫他们参考一下 开源中国安卓客户端 的源码,里面有保存 Cookie 的方法。

PS:如果没记错的话,应该是在 net.oschina.app.api.ApiClient 这个类里面。


PS2:

可是我的安卓程序员说他们那边不想做cookie(说做不了).

这个安卓程序员是是什么情况?刚毕业的也不会说做不了吧?

对于你说的api的问题,可以使用token的形式,在laravel中只验证不登录,从而产生有期限的token,登录后将token传给客户端,然后客户端在以后的操作中,在头中带上token访问,当然,这种方式最好在https下使用。

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan