仅允许登录用户访问私人页面

时间:2011-01-19 14:41:43

标签: java jquery authentication servlets login

我正在开发一个MIS项目,目前我正在为此创建一个登录系统。 我在服务器端使用servlet,在客户端使用jquery进行ajax调用。

他们是一个登录页面,首先通过ajax调用检查登录状态,如果用户已经登录,则会将页面位置更改为“services.html”。

当services.html加载时,我再次检查登录状态以及用户是否未登录  然后我使用
将页面位置更改为“Login.html”  document.location='Login.html';

代码看起来像这样

$(document).ready(function() {
$("#login").hide();
    $.post("checkLogin",function(xml) {
    var status = $(xml).find("result").text();
    if (status == "yes") {
       document.location='Login.html';
    }
    else{
        // Do Nothing.
    }
});

现在,services.html页面的问题在于它会在整页加载到浏览器后检查登录状态。

我不知道限制非登录用户访问“services.html”页面的任何其他好方法。由于这个项目非常大,我必须创建大量类似于'services.html'的私有页面,如'stuInfo.html',用于访问学生信息等。

任何人都请告诉我任何好方法。

3 个答案:

答案 0 :(得分:3)

您应该在服务器端检查,而不是在客户端。 JavaScript在客户端运行,并且是可禁用的,可破坏的和可欺骗的。你不希望你的应用程序那么弱。

将所有受限制的页面放在某个文件夹中,例如/secured然后创建一个映射Filter <url-pattern>的{​​{1}},并检查/secured/*方法中登录用户的存在。< / p>

可以在servlet-filters tag info page中找到一个示例。

答案 1 :(得分:0)

查看Spring Security

在您的情况下,您几乎肯定会使用某种基于表单的身份验证,但它也支持HTTP authentication

答案 2 :(得分:0)

身份验证最适合在应用服务器或框架级别完成。 J2EE容器和框架(如上面提到的Spring)可以完成支路工作,因此您只需配置哪些页面所在位置以及哪些页面位于经过身份验证的区域之外。

普通的旧servlet可用于身份验证等,但请记住,在扩展应用时会遇到一些问题。使用servlet执行此操作的一种方法是将所有特权页面置于 /loggedin/services.html 后面。

然后你有一个为/ loggedin / ...定义的servlet,如果在会话中找不到身份验证参数,或者请求或者你正在这样做,它会重定向到登录页面。

希望有所帮助

相关问题