我不确定我是否在问题标题中正确解释了,所以这里有详细信息:
Login
控制器:
function authenticate() {
if ( authorized ) {
redirect('lobby');
} else {
redirect('login');
}
}
Lobby
控制器:
function index() {
//load lobby view
}
在登录页面中,我输入user / pass,单击Login,然后调用authenticate()
,并将我重定向到Lobby
。
但是,当我在大厅点击刷新时,登录表单会再次提交,所以我再次“登录”。我该如何防止这种情况发生?
答案 0 :(得分:3)
您所看到的是浏览器中与CodeIgniter无关的行为本身。 Web浏览器存储登录表单的POST数据,并在用户点击提交按钮时导航到表单的操作。服务器的响应是重定向。因此,当用户点击刷新按钮时,浏览器会刷新表单操作,而不是服务器的重定向响应。
你有两个选择可以解决或避免这种情况。首先想到的是检查身份验证方法以查看用户是否已登录。如果是,则继续并重定向到Lobby。否则,请正常检查用户的登录信息。
您也可以只更改登录表单的操作,直接进入大厅,并使用Lobby的索引方法进行身份验证。如果用户未登录,请将其从那里重定向回登录表单。
答案 1 :(得分:0)
您应该使用控制器在构造中验证用户是否已记录,这样,您可以根据会话变量重定向或不重定向。