我正在开发一个电子商务网站,我需要处理应用程序的前端和后端部分。因此,我将处理客户登录和管理员用户登录。由于这是一个电子商务网站,大多数人建议分别考虑安全性来存储用户和客户。如果这不是电子商务类型,我会使用用户组方法并将所有用户存储在单个用户表中并相应地管理权限。
我的问题是我应该如何在前端和后端使用相同的Ion Auth身份验证库,同时分别保留客户表和用户表。您可以理解,问题是使用相同的auth库处理客户和管理会话。
我认为HMVC也无法解决这个问题。目前我正在考虑复制应用程序文件夹或为前端和后端开发两个独立的CI应用程序。我对这类应用程序的经验很少。任何人都可以指导我走正确的道路吗?提前谢谢。
答案 0 :(得分:0)
更改ion_auth用于验证' 用户'的表格。很容易实现。它可以在运行时动态完成。
用于身份验证的表的名称在配置文件 application \ config \ ion_auth.php 中使用此代码行定义。
$config['tables']['users'] = 'users';
但是,默认表名可以是您喜欢的任何名称。如果在数据库中您更改了表格的名称' 用户'到' 客户'你可以将配置文件更改为:
$config['tables']['users'] = 'customers';
现在 customers 是用于验证登录的默认表。
但我们需要两个身份验证表,因此创建另一个用于管理目的的表并命名为' admin_users '。
我们需要做的就是将$config['tables']['users']
的值更改为' admin_users'。这将在加载 ion_auth 库之后但在使用任何ion_auth方法之前完成。使更改变得复杂的唯一方法是将ion_auth的配置加载到内存中。
为防止名称冲突,会在ion_auth的配置项集中添加额外的索引。因此,在内存中,ion_auth配置项$config['tables']['users']
实际上是$config['ion_auth']['tables']['users']
。动态设置新表名时,需要解决此额外索引。
以下是一些处理额外索引并将身份验证表动态更改为' admin_users 的代码。
// get array at $config['ion_auth']['tables']
$ion_tables = $this->config->item('tables', 'ion_auth');
// dynamically change item 'users' in that array
$ion_tables['users'] = "admin_users";
只有在执行管理功能的控制器中才需要此代码。控制器中没有任何事情需要发生在"客户"因为这是默认值。