Laravel 4中的多个身份验证会话

5
我目前正在处理的项目分为管理控制台和普通前端。前后端都在同一个Laravel实例中。
在前端,我试图创建一个仅适用于前端的用户登录系统。它使用不同的表和模型,并且与管理员的User模型相比有不同的关系。
我无法想出一种同时为两个系统使用Laravel Auth类的方法。从逻辑上讲,Auth使用单个配置文件,更重要的是,使用单个会话名称。
提出的一个解决方案是不使用不同的表和模型,并使用某种形式的acl进行区分。但我不喜欢以这种方式混合前端和后端。特别是因为这意味着我突然需要将管理员User模型所有之前独特于前端用户的字段和关系都赋予。
这似乎不是正确的做事方式。我可以切换到不同的身份验证系统或将管理程序分成具有其自己配置的包,但该项目的范围不允许进行耗时的更改。
我欢迎您提供任何想法。

1
Laravel 4:需要使用2个不同的表进行身份验证 - cyvvilek
3个回答

5
最近我也遇到了这个问题。整个分离环境并不是很容易,特别是如果你已经有了开发和生产环境。
但是,我花了一些时间创建了一个包来解决这个问题,您可以在https://github.com/ollieread/multiauth找到它。这个包本质上是Auth的工厂类,允许你使用多个实例,所以你可以像这样访问它:
Auth::admin()->check();
Auth::user()->check();
Auth::whatever()->check();

我希望这个包能够帮助你或任何正在寻找这种方法的人。

2
我不确定,但也许它有用。为管理员创建单独的环境,然后你将拥有类似于app/config/admin/session.php和app/config/session.php的生产环境(默认环境)。
你可以在这里看到如何设置环境:http://andrewelkins.com/programming/php/how-to-set-laravel-4-environments/ 但正如我所说,这只是一个想法,我不太确定 :)

环境显然是这里的最佳选择。设置admin.yoursite.com并相应地更改配置文件。这假定您未向用户类添加特定于角色的自定义方法。 - Makita

1
看起来如果不同的用户实体很少或从不需要看到相同的界面,您应该考虑将应用程序分成两个代码库。他们仍然会查询相同的数据库。
这不仅可以解决您的身份验证问题,还可以使代码维护变得更加容易。例如,在推送更新到管理员控制台时,您只需要将该应用程序置于维护模式,同时保持(可能更重要的)前端运行即可。

这实际上是一个非常好的观点。我们在我们的情况下放弃了拆分这些代码库的想法,因为利益被关注所超越。然而,关于单独的维护模式的观点可能会倾斜天平。 - Jochem Fuchs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接