1

在单页应用程序中,通常我们请求一个网页(dashboard.html)并从服务器获取它,然后我们在其上呈现一些仪表板数据(使用 ajax)

我只想在用户通过支持身份验证(具有有效的电子邮件和密码)时显示dashboard.html,否则我想将他重定向到登录页面。

$.ajax({
    url: "dashbaard.json",
    dataType: "json"
}).done( function(data){
    // data = { inValid: true } - from backend
    if(data.inValid){
        alert("You are not authorized user, please register 1st!");
        location.href = "register.html";
    } else {
        // render data on dashboard page - valid user
    }
}) 

但是假设用户无效,这是一个问题

  • 用户请求了dashboard.html,尽管用户无效,但所有资产(css、js、图像)都将被加载,在这种情况下,我们没有必要加载单个css或js文件

预期结果:用户请求的dashboard.html 如果用户无效,则应立即将他重定向到登录/注册页面,而无需从服务器加载任何不必要的内容。

我们如何使用单页应用程序处理它(如果可能,不刷新页面)我需要没有页面闪烁的最佳解决方案,我正在使用 Laravel 4 处理后端身份验证,它的工作非常好。

4

2 回答 2

0

我的方法是使用弹出/模式登录框来处理这种情况
如果 ajax 请求返回未经身份验证的用户,则显示登录框(facebox,引导模式,任何东西)
如果 ajax 请求返回经过身份验证的用户(连同数据)然后呈现仪表板数据

于 2013-11-22T04:08:14.010 回答
0

两种方式:

  1. 将dashboard.html 更改为另一种服务器语言,如php、asp.net 等,并在服务器端处理身份验证。如果无效,则重定向到登录页面。

  2. 在页面准备就绪时请求身份验证,并在每个 ajax 请求上添加 beforeSend 设置。$.ajaxSetup({beforeSend: function(){ // request authentication sync and redirect }});

如果你采用No.2方法,你最好将authorize方法添加到一个javascript文件中。

希望能帮助到你。

于 2013-11-13T07:23:36.130 回答