Laravel 5.2 ajax login



我对laravel v 5.2 有一些问题

我使用ajax发布请求,服务器响应201 Ok,返回数据用户,但当开始重定向到时

public function __construct()
{
    $this->middleware('auth');
}
public function index()
{
    return view('home');
}

我再次收到登录表单,,,如果我使用刀片表单进行身份验证,工作正常。

ajax发送给我成功:函数(){

               alert('okey all fine');      
             window.location.href = "/home";     

但是/主页看不到我的会话或?:)感谢

请将laravel/framework更新到5.2.27并备份您的AuthAuthController(以防您做出任何更改),然后发布php artisan make:auth,用最新的bug修复副本替换现有的laravel生成的auth功能文件。

看看这是否解决了您的身份验证会话不是持久性问题

可能是错误,因为api路由组上缺少2个中间件。将以下2个中间件添加到api中间件组,然后将该组添加到api路由

 AppHttpMiddlewareEncryptCookies::class,
IlluminateSessionMiddlewareStartSession::class,

Okey让我们看看我的文件

内核

<?php
namespace AppHttp;
use IlluminateFoundationHttpKernel as HttpKernel;
class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
    ];
    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            AppHttpMiddlewareEncryptCookies::class,
            IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
            IlluminateSessionMiddlewareStartSession::class,
            IlluminateViewMiddlewareShareErrorsFromSession::class,
            AppHttpMiddlewareVerifyCsrfToken::class,
        ],

        'api' => [
            'throttle:60,1',
        ],
    ];
    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
    'jwt.auth' => TymonJWTAuthMiddlewareGetUserFormToken::class,
    'jwt.refresh' => TymonJWTAuthMiddlewareRefreshToken::class,
    'role' => ZizacoEntrustMiddlewareEntrustRole::class,
        'permission' => ZizacoEntrustMiddlewareEntrustPermission::class,
        'ability' => ZizacoEntrustMiddlewareEntrustAbility::class,
    ];
}

路由

<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::group(['middleware' => ['web']], function () {
    Route::get('/', function () {
        return view('welcome');
    });

});
//Route::get('/register',array('as'=>'newRegister','uses'=>'MailController@index'));
Route::post('/auth', 'MailController@store');
Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
    Route::resource('note', 'NoteController');
});
Route::group(['middleware' => 'web'], function () {
    Route::auth();    
    Route::get('/backoffice', 'HomeController@home');

});

Route::group(['middleware' => 'web'], function () {
    Route::auth();    
    Route::get('/home', 'LoginController@index');
});

请求

<?php
namespace AppHttpRequests;
use AppHttpRequestsRequest;
class LoginRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

控制器

<?php
namespace AppHttpControllers;
use Auth;
use Mail;
use Session;
use Redirect;
use AppHttpRequests;
Use AppHttpRequestsLoginRequest;
use IlluminateHttpRequest;

Use AppUser;
class MailController extends Controller
{
   public function store(LoginRequest $request)
    {

     $credentials = $request->only('email', 'password');
     if (Auth::attempt($credentials)) {
    if (Auth::check()) {

        if (Auth::check()) return Redirect::to('/home');
     }
    }
       return response(['msg' => 'Error'], 401) // 401 Status Code: Forbidden, needs authentication
          ->header('Content-Type', 'application/json');
    }
     public function createRegister(Request $request)
    {
        $user = new User;
        $data['name']=$user->name=$request->username;
        $data['email']=$user->email=$request->email;
        $user->password=bcrypt($request->password);
        $user->remember_token=str_random(100);
        if ($request->password==$request->confirm_password){

        if ($user->save())
        {
            Mail::send('mail.register',['data'=>$data], function($mail) use ($data){
                $mail->to($data['email'],$data['name'])->from('info@ddrw.ru')->subject('Welcome to');
            });
        }}else { return "Password not match";}
        return back();
    }
}

和我的表单javascript

 var form1 = {
            view:"form", id:"log2", width:550, scroll:false,
            elements:[
                {  cols :[
                { view:"text", hidden:true, name:"_token", value:'{{ csrf_token() }}', labelWidth:50, label:"Email" },
                    { view:"text", name:"email", value:'', labelWidth:50, label:"Email" },
                    { view:"text", name:"password", value:'', type:"password", placeholder:"password" },
                    {view:"button",  width:100, label:"login", click:login}
                ]}
            ]
        };
  function login(){
            QW.message("Auth");
            var values = $$("log2").getValues();
            values = JSON.stringify(values);
            console.log(values)
            QW.ajax().sync().headers({'Content-Type':'application/json'}).post("/auth", values, {
                error:function(){
                             QW.alert('Oops');   
                },
                success:function(){


                    QW.alert('Thanks All fine');    
                     //    window.location.href = "/home";   
        }
            });
        }

我找到了解决方案。

路线有问题。。。会话未登录我以前的解决方案。。。但这是正确的。

Route::group(['middleware' => ['web']], function () {
    Route::get('/', function () {
        return view('welcome');
    });
    Route::get('/home', 'HomeController@index');
    Route::get('/redirect', 'SocialAuthController@redirect');
    Route::get('/callback', 'SocialAuthController@callback');
    Route::post('/auth', 'MailController@store');

});

Route::auth();
Route::get('/home', 'HomeController@index');

最新更新