Zend ACL - 如何通过ajax / jquery处理受保护页面的请求

时间:2010-11-18 19:08:55

标签: jquery zend-acl

我有点被困在这里 - 我可以写一个黑客来解决这个问题,但是想知道是否有正确的方法来做到这一点。

我使用Zend ACL来指定哪些页面受到保护并需要身份验证。 例如,如果“UploadVideo.php”是受保护的页面 - 当用户单击链接以访问该页面时 - 他将被带到登录页面,并在登录后重定向回UploadVideo.php页面。所以这一切都得到了妥善处理。

现在在另一页上 - 我有一个像“投票”按钮的东西。用户只有在登录后才能投票。

案例1 当用户登录时 - 他点击了投票按钮 - 我使用Jquery以下列方式调用操作: $.post('/video/vote', {video_id:video_id}, function(data) { if(data=="OK") ..... } 现在/视频/投票是受保护的资源,并且由于用户已登录 - 调用投票操作会增加投票计数并发回“OK”消息,并使用新的投票计数动态更新页面。

案例2 用户未登录 - 他点击了投票按钮 - 因为页面受到保护 - 登录页面通过变量“data”中的ajax调用返回 理想情况下,当用户未登录时 - 不应发​​生ajax调用 - 应将用户重定向到登录页面 - 登录后,他会被重定向到/ video / vote行动,这会增加投票次数 - 最后用投票按钮发送回页​​面

我该如何处理。我可以编写一些hacks并检查用户是否登录,并根据这个决定是否进行ajax调用或重定向用户,但这是最好的方法。

我不知道我是否清楚地解释了这个问题。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

可能有一种Zend特定的方式,我不知道,但我想不出比

更简单(和更清洁)的东西
  • 根据用户是否登录来填充Javascript变量logged_in

  • 当用户点击投票按钮时,检查logged_in;如果不是

  • ,则提供重定向
  • 使用包含当前页面URL的目标变量重定向到登录页面(对于 ,我确定,存在Zend Framework特定方式)

  • 显然,保持所有服务器端检查。这只是为了方便。