我正在构建一个应用程序,允许应用程序点击ACT网址,然后触发模块方法以使用ExpressionEngine API创建新条目。但是,由于没有用户登录/登录,因此不允许向频道提交条目。
这样做的最佳方法是什么。绕过EE api并手动提交条目,或者以progamatically方式登录用户..但那么如何处理会话等等?
如果答案是"将用户记录在"如果可能的话,看到代码示例会很棒。
谢谢!
答案 0 :(得分:12)
如您所述,有两种方法可以添加新条目:
主要区别在于使用API添加的条目将:
对于简单的频道,手动添加条目相当容易,但如果使用使用其他表格的第三方字段类型,则会变得更加复杂。
要记录您的成员,您只需要:
// Get the member's id (the member must have permissions to post entries)
$member_id = 1;
// Create session
$this->EE->session->create_new_session($member_id);
使用频道条目api添加条目,然后:
// Log user back out
$this->EE->session->destroy();
完成后。
答案 1 :(得分:5)
您将要查看./system/libraries/Auth.php中的Auth.php类。此类是身份验证API的抽象,允许您完全按照自己的意愿执行操作。 “用户登录”功能使用这些相同的方法以及成员模块。
您还可以查看Authenticate模块(免费),以便了解其他人如何使用Auth类。
https://objectivehtml.com/authenticate
以下是一些伪代码供您使用:
// Fetch the member from the DB using whatever logic you need
$this->EE->db->where('username', 'some-username');
$member = $this->EE->db->get('members');
$this->EE->load->library('auth');
// Load a new Auth_result object which logs in the member
$authed = new Auth_result($member->row());
$authed->start_session($cp_session = FALSE);
$member->free_result();
这段代码应该可行,但我没有时间执行它,这就是为什么它被认为是伪代码。
我还应该补充一点,我不确定这是否是解决问题的最佳方法。我只是回答“如何在不知道密码的情况下以编程方式登录用户而不提交登录表单”的问题。