2014-09-02 82 views
0

我已经使用本教程在Laravel中创建我的用户登录名:Laravel Authentication Essentials。所以我有一个SessionController,其中包含方法createstoredestroy,分别用于显示表单,登录和输出。在Laravel中放置身份验证逻辑的位置?

但本教程中没有模型,验证和Auth::attempt位于控制器中。那感觉不对。我无法创建Session模型,因为Session类已经存在。

我应该在User模型中使用login/out逻辑,还是有另一种方法可以符合MVC架构模式?

回答

1

首先,记住(或知道)你可以改变Laravel的一切。如果你需要使用会话表中的会话模式,转到应用程序/配置/ session.php文件并更改Laravel会话表laravel_sessions:

'table' => 'laravel_sessions', 

人们做不同的事情,这些天,方法上的改进,每天基础和你做代码的方式必须让你舒适。如果你觉得这是不正确的,你看到人们这样做,改变它,拉拉维尔给你权力来改变和按照自己的方式行事。如果你觉得你找到了一个更好的方式,分享它。

这是2013年的视频,今天Jeffrey以完全不同的方式进行身份验证。注册一个Laracasts帐户,并采取完整的Build a Larabook视频系列,看看他现在是如何做的。

本教程中没有会话模型,因为他没有在会话表中存储会话(成功登录)。

在本教程中,他从不触及用户模型,因此在用户模型中没有登录。他用来进行身份验证的唯一方法是Auth::attempt(),这是一种Laravel外观方法,它在内部使用用户模型(M)来查找用户并检查密码是否匹配。他正在与会话控制器(C)和所有与登录(或登录)和显示登录视图(V)有关的一切都在该特定控制器内完成。

如果对您来说更容易,您可以将SessionsController重命名为LoginController,我,我自己并不真的喜欢登录的会话名称,但这是一个品味而不是代码正确性的问题。

这就是说,我没有看到该视频中的MVC(或任何名称人们喜欢称之为本周)的问题。

编辑接听评论:

模型的目的是实现数据,没有数据,没有模型。在Laravel和数据库管理系统的背景下,是的,没有表格,没有模型。在上下文中,例如,客户端服务器API,您的服务器API(Laravel,Rails ...)将为您的客户端模型(Angular,EmberJS ...)提供数据,因此,不会有任何直接相关的表到客户模型,但仍然是一个模型。

但在这种特殊情况下,您正在通过服务,身份验证服务访问模型,用户模型。

+0

另一个伟大的答案,谢谢你安东尼:)所以模型的目的是为了一个数据库表,没有表没有模型? (简而言之)我已经倾向于与Laracasts签约一段时间了,很好的资源! – 2014-09-03 05:27:17

+0

编辑澄清。 – 2014-09-03 12:30:27

+0

再次感谢,非常有帮助! – 2014-09-03 21:24:47