我使用本教程在Laravel中创建用户登录:Laravel Authentication Essentials。所以我有SessionController
包含方法create
,store
和destroy
,用于显示表单,分别登录和注销。
但是本教程中没有模型,验证和Auth::attempt
在控制器中。这感觉不对。我无法创建Session
模型,因为Session
类已经存在。
我应该将登录/输出逻辑放在User
模型中,还是有其他方法可以执行符合MVC架构模式的操作?
答案 0 :(得分:1)
首先,记住(或知道)你可以改变Laravel中的所有内容。如果您需要使用会话表的会话模型,请转到app / config / session.php并将Laravel会话表更改为laravel_sessions:
'table' => 'laravel_sessions',
现在人们做事的方式不同,方法每天都在改进,你的代码编写方式必须让你感到舒服。如果你觉得你看到人们这样做是不对的,那就改变它,Laravel给你改变的能力并按照自己的方式做事。如果您觉得自己刚刚找到了更好的方法,请分享它。
这是2013年的视频,今天Jeffrey正在以完全不同的方式进行身份验证。注册一个Laracasts帐户并参加完整的Build a Larabook视频系列,看看他现在是如何做的。
本教程中没有会话模型,因为他没有在会话表中存储会话(成功登录)。
在教程中,他从不接触用户模型,因此用户模型中没有登录。他用来进行身份验证的唯一方法是Auth::attempt()
,这是一种Laravel facade方法,它在内部使用用户模型(M)来查找用户并检查密码是否匹配。他正在使用会话控制器 (C),所有与登录(或登录)相关的内容以及显示登录视图(V)都在内部完成那特定的控制器。
如果你更容易,你可以将SessionsController重命名为LoginController,我,我自己,不喜欢登录的Sessions名称,但这是品味而不是代码正确性。
据说我在该视频中没有看到MVC(或本周人们喜欢称之为的任何名称)问题。
编辑回复评论:
模型的目的是数据,没有数据,没有模型。在Laravel和数据库管理系统的上下文中,是的,没有表,没有模型。例如,在客户端 - 服务器API的上下文中,您的服务器API(Laravel,Rails ...)将为您的客户端模型(Angular,EmberJS ...)提供数据,因此,没有表直接相关到客户端模型,但仍然是模型。
但在这种特殊情况下,您通过服务访问模型,用户模型,身份验证服务。