我是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服务的调用?或者是什么?
答案 0 :(得分:1)
您可以在LoginController中覆盖 AuthenticatesUsers 特征的任何方法。因此,可以完全控制内置控制器的功能。