场合
我目前在同一个Ubuntu服务器上有两个cakephp 3应用程序,使用相同的MySQL和不同的数据库。
让我们调用第一个应用Hammy
(使用数据库名称hammy
)
让我们调用第二个应用Chewy
(使用数据库名称chewy
)
Hammy
最初是为特定客户的公司构建的,因此users
数据库中有groups
和hammy
个表。
随后,我需要为同一个客户和另一个客户构建Chewy
。
在chewy
内,我设计了users
和groups
个表,但附加了一个名为account_id
的列。
这些是我用于上述设置的域名:
customerA.hammy.com customerA.chewy.com customerB.chewy.com
我想要什么
我想要的是,在customerA.hammy.com中的用户点击将她发送给customerA.chewy.com的链接后,她可以继续访问customerA.chewy.com
无论用户登录customerA.hammy.com还是customerA.chewy.com,她都可以毫无问题地访问这两个网络应用。
基本上是单点登录。
我的选择
这些是我如何解决这个问题的想法。
我熟悉使用CakePHP 3.x构建Web服务
但是,我不熟悉身份验证选项。
这是我在Hammy和Chewy的AppController
$authOptions = [
'loginRedirect' => [
'controller' => 'Pages',
'action' => 'overview'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login'
],
'authorize' => ['Controller'],
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
],
],
],
'unauthorizedRedirect' => [
'controller' => 'Users',
'action' => 'login',
],
];
$this->loadComponent('Auth', $authOptions);
缺点是我从未尝试过Redis,所以我甚至没有一个概念性的想法如何实现它。
欢迎任何建议。
谢谢。
答案 0 :(得分:1)
CakePHP 3.x doc : Manually Logging Users In
有了这个,你可以避免"自然" cakephp登录,并强制它以您想要的方式记录您的用户。
最大的问题是你在Cakephp sub-domaine之间没有任何共享部分。
对我来说(但那是可以完善的):
在更改Dom时,检查cookie是否存在,如果是,检查它是否合法,如果是,则生成新令牌以擦除旧令牌并在新Dom上自动登录我的用户。
这样,您可以将数据链接到共享部分中的配置文件(序列化数组在文件或数据库字段中)......
小心使用令牌作为密码的安全风险: