如何在Laravel项目中正确处理此自定义登录?

时间:2017-01-23 15:12:09

标签: php laravel login laravel-5

我是PHP的新手,在 Laravel 中是全新的,我有以下问题。

我正在使用Laravel开发前端应用程序(因此我仅将其用于路径控制器视图< /强>)。所有业务逻辑都由实现REST Web服务的 Java后端应用程序实现。

我知道Laravel使用以下语句提供了一个非常完善的自动登录系统创建:

php artisan make:auth

问题是该系统直接与数据库交互。

在我的情况下,Laravel应用程序只需要与Java后端应用程序交互(这是与数据库交互的应用程序)。所以这个系统不适合我。在这个发展阶段,我们没有任何代币。

基本上Laravel前端应用程序是这样的:

1)显示登录表单(用户名和密码)的视图

2)控制器类,其中包含一个方法,该方法接收上一个表单的提交并调用后端应用程序的REST Web服务(执行具有授权标头的请求< / strong>包含插入的用户名和密码。

后端应用程序将返回(进入上一个Laravel控制器方法) JSON ,其中包含用户信息,如响应:

{
  "userName": "Painkiller",
  "email": "painkiller@gmail.com",
  "enabled": true
}

或者,如果用户未获得授权,则可以使用此类

{
  "timestamp": 1485183649134,
  "status": 401,
  "error": "Unauthorized",
  "message": "Credenziali non valide",
  "path": "/Extranet/login"
}

所以基本上如果用户进行身份验证(如果Laravel控制器收到第一个JSON类型),我转换为表示已登录用户的 PHP模型对象的JSON对象,则此对象将被放入会话和用户被重定向到下一页。

可能是一个简洁的解决方案吗?或者可以创造某种问题?

这是另一个疑问。进入Laravel项目结构,我有 App \ Http \ Controllers \ Auth 命名空间,包含自动生成的 LoginController 类,这个:

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }
}

根据我的理解,这个类应该用于Laravel本机登录系统(执行 php artisan make:auth 语句的那个​​)。

所以最好为我的自定义登录创建一个新的控制器类,这涉及到我的后端Web服务的调用?或者是什么?

1 个答案:

答案 0 :(得分:1)

您可以在LoginController中覆盖 AuthenticatesUsers 特征的任何方法。因此,可以完全控制内置控制器的功能。