0

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

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

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

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

private function _authenticate() {}

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

4

3 回答 3

0

Okay i have come accross a solution.

I have input validations on my forms which means, if the user omits a textbox, he is never going to be redirected to /createaccount

So if he does accesss the link directly, the textboxes get a value of 0 and if that happens, it means the user has accessed the link directly. I redirected the user to 404 page then.

于 2012-05-28T15:23:32.540 回答
0

example.com/index.php/home/authenticate不访问_authenticate家庭控制器的方法,它正在寻找authenticate方法(它们是两个不同的东西)。

要在未登录的情况下进行重定向,您将拥有以下内容:

public function authenticate()
{
  if ($not_logged_in)
    redirect('/login');
  else
    show_login_stuff_here();
}
于 2012-05-28T14:53:31.437 回答
0

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

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

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

  1. 你应该公开身份验证
  2. 成功登录用户并存储在会话中
  3. 在身份验证方法开始时检查会话以查看用户是否已登录并采取相应措施,重定向或强制登录等
于 2012-05-28T14:53:34.573 回答