php - 拉拉维尔 :login using custom middleware

标签 php mysql laravel-5

最近我开始使用 laravel 框架,并以老式的方式实现登录功能

Route::post('login',['as'=>'validatelogin','uses'=>'HomeController@login']);
Route::get('home/{page?}/{id?}','HomeController@home');

在 HomeController 中

public function login(Request $request)
    {
        $matches=['email'=>$request->email];
        $users =User::where($matches)->first();
        if($users == FALSE)
        {
            $request->session()->flash(
            'errors',
            'Invalid Email');
           return redirect('/');    
        }
        else if($users->account_status==0)
        {
            $request->session()->flash(
            'errors',
            'Account is blocked please contact admin');
           return redirect('/');
        }
        else if (!Hash::check($request->password,$users->user_password))
        {
                $request->session()->flash('errors', 'Invalid Password');
                return redirect('/');    
        }
        else
        {
              //login success set the session values
              $request->session()->put('user',$users);
              //redirect to home
              return redirect('home');

        }
    }

home函数中,如果没有重定向到登录页面,则检查用户 session 是否存在,否则根据用户角色加载 View 。

public function home(Request $request,$page='admin-home',$id=null)
    {
        if(!$request->session()->has('user'))
        {
            $request->session()->flash('errors', 'Session is expired');
            return redirect('/');
        }
       //load the views based on roles

  }

如何使用中间件重写上面的代码,我找到了很多例子,但无法得到正确的解决方案

最佳答案

首先我强烈建议您使用 Laravel 登录。目前,当您将用户放入 session 中时,您并没有让他登录。Laravel 使用 Auth 外观来管理用户登录、注销、防护等。

您可以使用 Auth::attempt(['email' => $email, 'password' => $password]) 自动检查凭据和登录是否正确(此方法将返回 true关于成功)。之后,您可以使用 Auth::check() 来查看用户是否已登录,或者使用 auth 中间件来保护路由和 Controller ,这样您就不必检查用户是否已登录用户已登录其中。

关于php - 拉拉维尔 :login using custom middleware,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37826857/

相关文章:

php - 根据用户从数组输入更新数据库

php - 只需要了解用于设置 POSTed var 的 PHP 语法

php - 为什么我的查询找到的是数字字段条目,而不是数字/字母组合

php - 按日期排序返回不正确的值

php - 为什么在 Laravel 中自定义用户提供程序身份验证后我会收到此 "These credentials do not match our records"消息?

php - 从 PHP 字符串中删除控制字符

php - 比较 mysql/symfony2 中的日期

c# - 使用 C# 和 .NET 2.0 连接到本地 MySQL 数据库时出现问题

使用ajax时Javascript "for"循环问题,即使条件为假,循环也可以访问

php - 通知端点验证不适用于 Laravel 端点