5

我目前正在处理的项目分为管理控制台和普通前端。前端和后端都在同一个 Laravel 实例中。

在前端,我正在尝试创建一个专门用于前端的用户登录系统。它使用不同的表和模型,并且与管理员的用户模型相反,它具有不同的关系。

我想不通的是一种在两个系统中都使用 Laravel Auth 类的方法。从逻辑上讲,Auth 使用一个配置文件,更重要的是,一个会话名称。

已经提出的一种解决方案是不使用不同的表和模型,而是使用某种形式的 acl 进行区分。但我不喜欢以这种方式混合前端和后端的想法。特别是因为这意味着我突然不得不为管理员用户模型提供以前对前端用户唯一的所有字段和关系。

这似乎不是做事的正确方法。我可以切换到不同的身份验证系统或将管理员分离到具有自己配置的包中,但项目范围不允许进行此类耗时的更改。

我欢迎您提供任何想法。

4

3 回答 3

5

这也是我最近遇到的一个问题。整个单独的环境并不容易,尤其是如果您已经拥有开发和生产环境。

然而,我确实花了一些时间创建一个包来解决这个问题,你可以在https://github.com/ollieread/multiauth找到它。包本身本质上是 Auth 的工厂类,它允许您使用它的多个实例,因此您可以像这样访问它:

Auth::admin()->check();
Auth::user()->check();
Auth::whatever()->check();

我希望该软件包可以帮助您或其他正在寻找这种方法的人。

于 2013-12-15T12:28:24.583 回答
2

我不确定,但也许它有用。为什么不尝试为管理员创建单独的环境。然后你将拥有 app/config/admin/session.php 和 app/config/session.php 之类的东西用于生产(这是默认环境)。

你可以在这里看到如何设置环境http://andrewelkins.com/programming/php/how-to-set-laravel-4-environments/

但正如我所说,这只是一个想法,我不太确定:)

于 2013-12-05T15:51:00.497 回答
1

如果不同的用户实体很少或从不需要看到相同的界面,听起来您应该考虑将应用程序拆分为两个代码库。他们显然仍然会查​​询同一个数据库。

这不仅可以解决您的身份验证问题,还可以让代码的维护变得更加容易。例如,在将更新推送到管理控制台时,您只需将该应用程序置于维护模式,同时保持(可能)更关键的前端正常运行。

于 2014-03-29T02:12:09.143 回答