我目前正在处理的项目分为管理控制台和普通前端。 前端和后端都在同一个Laravel实例中。
在前端,我正在尝试创建一个专门用于前端的用户登录系统。它使用不同的表和模型,并且它具有与管理员的用户模型相对应的不同关系。
我无法弄清楚是为两个系统使用Laravel Auth类的方法。逻辑上Auth使用一个单独的配置文件,更多的是使用一个会话名称。
提出的一个解决方案是不使用不同的表和模型,并使用某种形式的acl进行区分。但我不喜欢以这种方式混合前端和后端的想法。特别是因为这意味着我突然不得不给管理员User模型以前前端用户独有的所有字段和关系。
这似乎不是正确的做事方式。我可以切换到不同的身份验证系统或将管理员分成具有自己配置的包,但项目范围不允许这样的时间消耗更改。
我欢迎您提出任何想法。
答案 0 :(得分:5)
这也是我最近遇到的一个问题。整个单独的环境并不容易,特别是如果您已经拥有开发和生产环境。
但我确实花了一些时间来创建一个解决这个问题的软件包,你可以在https://github.com/ollieread/multiauth找到它。包本身实际上是Auth的工厂类,它允许您使用它的多个实例,因此您可以这样访问它:
Auth::admin()->check();
Auth::user()->check();
Auth::whatever()->check();
我希望该软件包可以帮助您或其他任何寻求此方法的人。
答案 1 :(得分:2)
我不确定,但也许它很有用。为什么不尝试为管理员创建单独的环境。然后你会有app / config / admin / session.php和app / config / session.php之类的产品(这是默认环境)。
您可以在此处查看如何设置环境http://andrewelkins.com/programming/php/how-to-set-laravel-4-environments/
但正如我所说,这只是一个想法,我不太确定:)
答案 2 :(得分:1)
如果不同的用户实体很少或者从不需要看到相同的界面,你应该考虑将应用程序分成两个代码库。他们仍然会明显查询同一个数据库。
这不仅可以解决您的身份验证问题,而且还可以使代码更容易维护。例如,在将更新推送到管理控制台时,您只需要将该应用程序置于维护模式,同时保持(可能)更重要的前端正常运行。