0

Home コントローラーには、認証などのメソッドがいくつかあります。ユーザーが URL による認証にアクセスしないようにします。

そのため、URL バーに直接http://domain.com/index.php/home/authenticateと入力すると、アクセスが拒否されるか、ログインにリダイレクトされます。

ただし、メイン フォームのログイン ボタンをクリックすると、認証メソッドにリダイレクトされるはずです。

認証の前にアンダースコアを追加しようとしました。つまり、

private function _authenticate() {}

URLでアクセスすることはできませんが、ボタンを認証方法にリダイレクトすることもできません。

4

3 に答える 3

0

さて、私は解決策に出くわしました。

フォームに入力検証があります。つまり、ユーザーがテキストボックスを省略した場合、/createaccount にリダイレクトされることはありません。

そのため、ユーザーがリンクに直接アクセスした場合、テキスト ボックスの値は 0 になり、それが発生した場合は、ユーザーがリンクに直接アクセスしたことを意味します。その後、ユーザーを 404 ページにリダイレクトしました。

于 2012-05-28T15:23:32.540 に答える
0

example.com/index.php/home/authenticateホームコントローラーのメソッドにアクセスせず、_authenticateメソッドを探していauthenticateます (これらは 2 つの異なるものです)。

ログインしていない場合にリダイレクトするには、次のようにします。

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 に答える