tp5 session 解决跨域ajax请求问题

51 篇文章 2 订阅

第一我们是一个前后端分离的项目,就不可能使用同一个session了,那么我们将session不传给后台,给前端。我们登陆成功后通过ajax将值返回给页面,用js再次保存下就可以了。

$usernam = session( 'username', $name );
//session赋值
$userid = session( 'userid', $sid );
//session赋值
$user = array( 1, session( 'username' ), session( 'userid' ) );
return json( $user );

这样将值返回给页面就行了了。

 

前端ajax代码

success: function( data ) {
    console.log( data );
    if ( data == '1' ) {
        mui.toast( '登录成功', {
            duration: 'long',
            type: 'div'
        }
    );
    var user = data[1];
    //下标1为用户名字
    var id = data[2];
    //下标2为用户的id
    localStorage.setItem( 'username', user );
    localStorage.setItem( 'userid', id );
}

最后存入js 然后我们读取为

//读取为
var username = localStorage.getItem('username');

//删除某个键值对
localStorage.removeItem('uid');

//清除localStorage的所有内容
localStorage.clear();

 

我们将配置文件中的session进行更改

id=1,就可以了。这个有问题的,只能获取一个用户,比如两台机子登录不同用户,两台机子同时刷新,那么就会为一个用户了。

//session
    'session' => [
        'id' => '1',
        // SESSION_ID的提交变量,解决flash上传跨域
        'var_session_id' => '',
        // SESSION 前缀
        'prefix' => 'think',
        // 驱动方式 支持redis memcache memcached
        'type' => '',
        // 是否自动开启 SESSION
        'auto_start' => true,

        'use_trans_sid' => true,
    ],

 

ajax后台控制器

<?php
namespace app\api\controller;
use think\Session;
use think\Controller;
header("Access-Control-Allow-Origin: *"); //解决跨域
class Indexhome extends Controller {

public function index() {
        if(!Session::has('username'))
        {
            return "1";
        }
            $username = session('username');
            return json($username);
    }

ajax前端

 

<script type="text/javascript">
    $(function() {
        $.ajax({
            type: 'POST',
            url: "http://tp5-expert.likeball.top/api/Indexhome/index",
            dataType: 'json',
            success: function(data) {
                console.log(data);
                if(data == "1") {
                    alert("你还未进行登录");
                    location.href = 'http://thinkphp5-expert-page.likeball.top/index.html';
                }
            },
            error: function(error) {
                console.log('error');
            }
        });
    })
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值