我之前在使用Sentry 2的项目中完成了它,但我无法使用内置的Auth功能。
用户存储方法:
public function store()
{
$validation = new Services\Validators\User;
if ($validation->passesForStore()) {
// Create a new user
$user = new User;
$user->name = Input::get('name');
$user->password = Input::get('password');
$user->email = Input::get('email');
$user->save();
// Authenticate the user
Auth::loginUsingId($user->id);
return JSend::success([
'redirect' => URL::action('VaultController@index')
]);
}
// Provide a custom message for an e-mailaddress that's already in use
$message = '';
if ($validation->hasFailed('email', 'unique')) {
$message = 'This e-mailaddress has already been taken';
}
return JSend::fail([
'failed' => $validation->failedFields(),
'message' => $message
]);
}
AJAX响应处理程序:
// Redirect to given URL
if (typeof response.data.redirect != 'undefined') {
window.location = response.data.redirect;
}
用户已成功创建,在Auth::check();
结果loginUsingId
后直接放置true
,但只要window.location
重定向该页面,{{1} }结果为false并且用户未登录,即使手动导航到其他页面也不会。
App.session设置:
Auth::check()
请记住,登录方法以类似的方式工作,但也不起作用! (它可以在不使用AJAX的情况下工作)
===更新===
生活变得有点怪异了。 我现在可以使用我的登录和注册方法登录。
改变了什么?我为我以前的localhost项目添加了一个vhost别名,似乎登录了
工作正常。 (听起来像环境问题?)。
但是注销不起作用。我为测试目的创建了以下路由:
'lifetime' => 120,
'expire_on_close' => true,
结果如预期的那样Route::get('logout', function(){
Auth::logout();
Session::flush();
dd(Auth::check());
});
。然而!如果我然后转到我的登录页面,我会被重定向。访问我下面的其他调试路径会产生false
,这绝对是绝对的
没有任何意义。用户未使用'记住'标志。
true
此时任何输入都受到高度赞赏:)
===更新2 ===
以前的成功尝试似乎只是一个侥幸。我手动登录后登录或注销不起作用。有什么方法可以调试这种黑魔法吗?
===更新3 ===
今天我再次尝试了我的应用程序,并且无法写入会话文件xxxx错误。我检查了我的storage / sessions文件夹,发现没有这样的文件。
我清空了存储/会话文件夹,清除了所有缓存,并且登录和奇怪 我以前退出的问题已经消失了。
即使主要问题已经解决(目前),我仍然想知道导致这个问题的原因
答案 0 :(得分:0)
这个问题的答案可以在类似的帖子中找到,谢谢@Razor!