防止直接访问点火器中的特定功能


Preventing direct access to specific functions in codeigniter

我的家庭控制器中有一些方法,例如身份验证。我不希望用户通过 url 访问身份验证。

因此,如果他直接在 url 栏中 http://domain.com/index.php/home/authenticate 输入,则应拒绝他访问或重定向到登录。

但是,如果他单击主窗体中的登录按钮,他应该能够重定向到身份验证方法。

我尝试在身份验证前面添加下划线,即

private function _authenticate() {}

它有效,我无法通过 URL 访问它,但按钮也不能重定向到身份验证方法。

example.com/index.php/home/authenticate

访问家庭控制器的_authenticate方法,而是寻找authenticate方法(它们是两个不同的东西)。

如果未登录,要重定向,您将有如下内容:

public function authenticate()
{
  if ($not_logged_in)
    redirect('/login');
  else
    show_login_stuff_here();
}

当您将下划线放在方法名称前面时,您无法使用该 url 访问它,因为它无法访问。

我认为您误解了私有方法的用途。

如果身份验证是您的登录方法

  1. 应公开身份验证
  2. 成功后,用户登录并存储在会话中
  3. 在身份验证方法开始时,检查会话以查看用户是否已登录并采取相应操作,重定向或强制登录等
好的,

我遇到了一个解决方案。

我在表单上有输入验证,这意味着,如果用户省略文本框,他永远不会被重定向到/createaccount

因此,如果

他直接访问链接,文本框将获得值 0,如果发生这种情况,则表示用户已直接访问链接。然后我将用户重定向到 404 页面。