Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Login 如何将atk4登录与现有PHP应用程序集成_Login_Frameworks_Integration_Atk4 - Fatal编程技术网

Login 如何将atk4登录与现有PHP应用程序集成

Login 如何将atk4登录与现有PHP应用程序集成,login,frameworks,integration,atk4,Login,Frameworks,Integration,Atk4,Atk4具有基本的登录功能,我可以使用Atk4、tmail模板等构建它来添加用户注册、忘记密码链接、电子邮件验证等。但是,如果我想将其与已经提供该功能的现有开源应用程序集成,我需要做什么才能允许系统登录,以便在登录到第三方应用程序后可以查看atk4保护的页面?有四种选择 独立的站点、独立的域、独立的服务器、独立的数据库 最安全的方法是将安全令牌从另一个系统传递到敏捷工具包。令牌应包含用户名和某些机密密码短语的哈希值,以及用户名$user.:“.md5($secret.:”$user) 您可以检查

Atk4具有基本的登录功能,我可以使用Atk4、tmail模板等构建它来添加用户注册、忘记密码链接、电子邮件验证等。但是,如果我想将其与已经提供该功能的现有开源应用程序集成,我需要做什么才能允许系统登录,以便在登录到第三方应用程序后可以查看atk4保护的页面?

有四种选择

独立的站点、独立的域、独立的服务器、独立的数据库 最安全的方法是将安全令牌从另一个系统传递到敏捷工具包。令牌应包含用户名和某些机密密码短语的哈希值,以及用户名
$user.:“.md5($secret.:”$user)

您可以检查API类内的参数:

$this->auth=$this->add('YourAuth');

if($_GET['login_token'])){
    list($user,$token)=explode($_GET['login_token']);
    if(!verify_token($token))throw $this->exception('Break-in attempt');
    $this->api->auth->login($user);
}

$this->auth->check();
单独的站点、域,但具有相同的用户访问权限 您需要在敏捷工具包Auth类中构建相同的加密。幸运的是,通过重新定义encryptPassword,您可以轻松做到这一点

class MyAuth extends SQLAuth {
    function encryptPassword($password,$salt=null){
        return ....
    }
}
如果需要不同的数据库连接,还可以添加:

   function init(){
       parent::init();

       // Ouch, last occurrence of static method use!
       $newdb=DBLite::connect(
           $this->api->getConfig('user_dsn'));

       $this->db=$newdb->dsql();
   }
共享会话-同一域和同一台计算机,但没有代码访问权限 敏捷工具包使用应用程序的领域作为名称。这是在index.php内创建应用程序实例时为构造函数指定的参数:

$api=new MyFrontend('myrealm');
你需要打电话

session_name('myrealm');
session_start();
然后您需要设置会话变量,比如myrealm\u MyAuth\u info,您可能可以通过从敏捷工具包中转储$\u会话的内容来实现这一点。您需要将其设置为类似于array('user'=>'john')的值,只要它不是“false”,就可以了

共享计算机、域、会话和一些代码 这与前面的方法类似,但应该更容易做到:

include 'yourapp/atk4/loader.php';
include 'yourapp/lib/Frontend.php';
$api = new Frontend();
$api->auth->login('john');

这假设“前端”类正确设置了“auth”。如果这不起作用,可能需要进行一些调整,例如,如果您是从API中调用它,您可能希望将$auth->check()移动到initLayout()函数中。

我的意图是相同的域、相同的计算机、相同的会话、相同的数据库(以便用户表是通用的),但代码是分开的,并将从第三方应用程序链接到atk4页面。我将看看它是如何工作的,并在这里更新。谢谢