我正在英特尔xdk平台和laravel 5.2。*上编写混合应用程序作为服务器端。 问题是,当我使用Auth :: login()登录时,我将响应json返回给外部客户端应用程序然后继续发送ajax请求,但是登录后的ajax请求生成不同的会话,因此我的Auth :: user ()正在迷失。澄清在这种情况下的客户端应用程序(混合应用程序)在我的公司服务器上运行的移动设备和服务器应用程序上运行非常重要。有用的建议将非常感激,因为我试图在过去两天内解决这个问题。 这是登录发生的AuthController:
public function postLogin()
{
try
{
$user = User::whereUsername(Request::input('username'))->first();
if(count($user) <= 0)
throw new Exception("שם משתמש לא קיים");
if(!$this->check_password($user,Request::input('password')))
throw new Exception("הזנת סיסמא שגויה");
Auth::login($user);
return response()->json(['success' => 'OK']);
}
catch(Exception $e)
{
return response()->json(['error' => $e->getMessage()]);
}
}
这是clientController,我需要丢失的Auth:user()
public function fetch($query)
{
return Client::whereGroup_id(Auth::user()->parent_id)
->whereDeleted(0)
->orWhere("first_name", "like", '%$query')
->orWhere("last_name", "like", '%$query')
->orWhere("passport", "like", "%$query%")
->get();
}
这是从客户端登录的第一个ajax请求:
$.ajax({
url: "http://localhost:86/auth/login",
type: "POST",
data:{username:$('#username').val(),password:$('#password').val()},
success: function(result){
if(result.success)
{
af.ui.loadContent("#client_page",false,false,"fade");
}
}
});
最后来自typeahead元素的登录后ajax请求你可以在远程域看到被叫url:
$(document).ready(function(){
var name_randomizer = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
// You can also prefetch suggestions
// prefetch: 'data/typeahead-generate.php',
// remote: "http://" + connection.getHost() + ":" + connection.getPort() + "/admin/fetch/%QUERY"
remote: "http://" + connection.getHost() + ":" + connection.getPort() + "/fetch/%QUERY"
});
name_randomizer.initialize();
$('#client_search').typeahead({
hint: true,
highlight: true
}, {
name: 'string-randomizer',
displayKey: 'value',
source: name_randomizer.ttAdapter()
});
});