我的Home控制器中有一些方法,例如authenticate。我不希望用户通过url访问身份验证。
因此,如果他直接在网址栏中输入http://domain.com/index.php/home/authenticate,他将被拒绝访问或重定向到登录。
但是,如果他点击主窗体中的登录按钮,他应该能够被重定向到authenticate方法。
我试过添加一个认证的下划线,即
private function _authenticate() {}
它有效,我无法通过URL访问它,但按钮也不能重定向到authenticate方法。
答案 0 :(得分:0)
example.com/index.php/home/authenticate
无法访问家庭控制器的_authenticate
方法,它正在寻找authenticate
方法(它们是两个不同的方法)。
要重定向,如果没有登录,你会有类似的东西:
public function authenticate()
{
if ($not_logged_in)
redirect('/login');
else
show_login_stuff_here();
}
答案 1 :(得分:0)
当您将下划线放在方法名称前面时,您无法使用该URL访问它,因为它无法访问。
我认为你误解了私有方法的用途。
如果身份验证是您的登录方式
答案 2 :(得分:0)
好的,我已经找到了解决方案。
我在表单上输入了验证,这意味着,如果用户省略了文本框,他将永远不会被重定向到/ createaccount
因此,如果他确实直接访问链接,则文本框的值为0,如果发生这种情况,则表示用户已直接访问该链接。我将用户重定向到404页面。