Ajax登录问题

提交登录代码

  $('#login-btn').click(function () {
            let username = $('#username').val();
            let password = $('#password').val();
            let captcha = $('#captcha').val();
            $('#refreshCaptcha').attr('src',"{{ captcha_src('admin.login') }}");
            if (username == '') {
                layer.msg('用户名不能为空', {icon: 2});
                return false;
            }
            if (password == '') {
                layer.msg('密码不能为空', {icon: 2});
                return false;
            }
            if (captcha == '') {
                layer.msg('验证码不能为空', {icon: 2});
                return false;
            }
            let data = {
                'username': username,
                'password': password,
                'captcha': captcha,
                '_token': "{{ csrf_token() }}"
            };
            $.ajax({
                url: "{{ route('admin.login') }}",
                type: "POST",
                data: data,
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                },
                success: function (res) {
                    if (res.code === 1) {
                        layer.msg(res.message, {icon: 1}, {time: 2000});
                        setTimeout(function () {
                            location.href = "{{ route('admin.index') }}";
                        }, 3000)
                    }else{
                        layer.msg(res.message, {icon: 2}, {time: 2000});
                        return false;
                    }
                },
                error: function (msg) {
                    let json = JSON.parse(msg.responseText);
                    json = json.errors;
                    for (let item in json) {
                        for (let i = 0; i < json[item].length; i++) {
                            layer.msg(json[item][i], {icon: 2}, {time: 2000});
                            return false; //遇到验证错误,就退出
                        }
                    }
                }
            })
        });

登录代码

public function login(LoginRequest $request)
    {
        $username = $request->get('username');
        $password = $request->get('password');
        $result = auth('admin')->attempt(['username' =>$username,'password' => $password,'status'=> 1]);
        if($result){
            return response()->json(['message'=>'登录成功','code' => 1]);
        }else{
            return response()->json(['message'=>'用户名或密码错误','code' => 0]);
        }
    }

中间件

<?php

namespace Modules\Admin\Http\Middleware;

use App\Http\Middleware\Authenticate;
use Closure;
use Illuminate\Http\Request;
class CheckLogin extends Authenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        $login_result = auth('admin')->check();
        if(!$login_result)
        {
            return redirect()->route('admin.login');
        }
        return $next($request);
    }
}

中间件注册

Ajax登录问题

路由声明


Route::prefix('admin')->group(function () {
    Route::get('login', 'LoginController@loginForm')->name('admin.login');
    Route::post('login', 'LoginController@login')->name('admin.login');
    Route::middleware(['admin.auth'])->group(function () {
        Route::get('/', 'AdminController@index')->name('admin.index');
    });
});

大佬们 这个Ajax登录到底咋回事呢?有时候能登录成功,有时候又不能登录,莫名其妙的???

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
amw0918

路由声明里面 get/post 路由定义 name重复了

2年前 评论
Cyline (楼主) 2年前
converst 2年前

感觉这流程有点问题。登录成功不应该后台生成token,然后前端缓存token的么。然后每次请求判断header是否有token。

2年前 评论
Cyline (楼主) 2年前
converst (作者) 2年前
Cyline (楼主) 2年前
converst (作者) 2年前
Cyline (楼主) 2年前

那你得找下不能登陆时的错误信息啊,比如不能登陆时,接口返回什么信息了,或者storage/log/laravel.log有记录下什么异常了,你得想办法找些能帮你判断问题的线索呀。光说个不能登陆,大佬也没头绪呀。

2年前 评论

表单登录后台默认session驱动,ajax 头部加上csrftoken ,页面内header 嵌入csrf 指令,可以查看表单提交文档模块设置

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!