如何在 Lumen 中使用身份验证进行用户登录?为什么我在启动时看到“未经授权”?

2023-12-31

我有一个无法加载/显示的登录页面(用户名/密码输入)。相反,启动应用程序时,显示的只是“未经授权”。

这是来自命令Authenticate.php我已将其进一步包含在下面。

My routes.php:

$app->get('/', 'PageController@index');

$app->group(['middleware' => 'middleware.auth'], function ($app) {
    $app->post('/', ['uses' => 'AuthenticationController@login']);
});

My PageController.php

namespace App\Http\Controllers;

use App\User;

class PageController extends Controller
{
    public function __construct()
    {
        //
    }

    public function index() {

        return view('login');
    }
}

My AuthenticationController.php:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Auth;
class AuthenticationController extends Controller
{
    public function __construct()
    {
        //
    }

    public function login(Request $request) {
        $credentials = $request->only(['email','password']);

        if (Auth::attempt($credentials, $request->has('remember'))) {
            return'logged in';
        } else {
            return 'not logged in';
        }
    }
}

Here's Authenticate.php位于'app\Http\Middleware:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Factory as Auth;

class Authenticate
{
    /**
     * The authentication guard factory instance.
     *
     * @var \Illuminate\Contracts\Auth\Factory
     */
    protected $auth;

    /**
     * Create a new middleware instance.
     *
     * @param  \Illuminate\Contracts\Auth\Factory  $auth
     * @return void
     */
    public function __construct(Auth $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if ($this->auth->guard($guard)->guest()) {
            return response('Unauthorized.', 401);
        }

        return $next($request);
    }
}

可能有更好的方法来完成我想做的事情,所以如果有的话,请向我演示那是什么。

但为什么我看到的是Unauthorized我的应用程序何时加载?我怎样才能解决这个问题?


看起来您正在检查用户是否在之前经过身份验证AuthenticationController@login可以调用方法。您需要从帖子/路由中删除中间件身份验证,因为本质上正在发生的事情是;

  • 主页 ($app->get('/'...)打开正常,因为没有为此路由定义身份验证中间件
  • 当您发布登录表单时,Lumen 被告知只有经过身份验证的用户才能访问该页面,因为根据您定义的 middleware.authPOST / route.

这应该有效:routes.php

$app->get('/', 'PageController@index');
$app->post('/', ['uses' => 'AuthenticationController@login']);


$app->group(['middleware' => 'middleware.auth'], function ($app) {
    $app->get('/user/dashboard', ['uses' => 'Controller@method']);
});

这样,任何人都可以查看并提交您的登录页面,但只有登录用户才能访问该 URL/user/dashboard答:代码的其余部分看起来不错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Lumen 中使用身份验证进行用户登录?为什么我在启动时看到“未经授权”? 的相关文章

随机推荐