2009-09-28 83 views
2

这是一个非常基本的JSP问题,因为我仍然试图理解正确的做事方式。如何在JSP中实现登录系统

我正在开发一个web应用程序,它需要用户在工作之前登录。我想要发生的是,只要没有登录的用户尝试访问任何页面(登录页面除外),用户就会被重定向到我的登录页面。

我选择的方法只是在每个页面的顶部添加一些代码,试图从会话中获取用户对象,如果它不存在,重定向到登录(I有一个用户对象存储在会话中存在的用户,其中包含其他详细信息,如权限)。

这是进行身份验证的正确方法吗?还是有更多的标准方法,我应该看看?

编辑:我决定把这个问题分成两个问题,因为一个问题更多的是最佳实践问题,另一个问题是纯技术问题。感谢您的回应。

回答

5

我不知道您是否有此选择,但使用Java EE声明性安全性将使您无需将验证代码放入每个JSP中。

的想法是,在你的web.xml指定的安全规则,如: URL模式只能由用户在访问,当用户试图访问受保护的 role.The容器会再挑战资源。您可以指定自己的登录页面,以便在用户遇到问题时使用。

我认为这对编码自己的登录非常完美。

这里是一个link来描述如何做到这一点。

+0

确实......声明式安全(使用JEE或其他实现)是处理身份验证的更简洁更安全的方式。 – jsight 2009-09-28 13:27:13

+0

谢谢,这实际上不是我现在可以走的方向,但我一定会考虑未来的项目。 – 2009-09-28 13:31:03

+1

注意还有两种安全约束:(1)基于角色,(2)基于用户。 样式1主要在企业(内联网)内部看到,并且如djna所述,通过Servlet规范(通过web.xml中的安全设置)可以很好地处理样式1。样式2主要用于公共Web应用程序,其中只有数据的“所有者”可以对其执行某些操作(例如更改,删除)。 样式2不由Servlet规范处理。一些网络应用程序框架可以为您处理。 – 2009-09-28 23:59:33

1

是,JSP被编译成servlet中的子类。早期回归的正确方法是简单地放置一个“回归”。在你的JSP中。

话虽如此,我认为你应该考虑其他认证解决方案。它很容易落得无意中忘了包括1 JSP的顶部,然后你就会在该网页上无意中允许Guest用户!

+0

感谢您的回答。由于这个问题很长,实际上问了两件事,我决定把问题分成两部分(为了将来更容易获得)。我会很感激,如果你可以发布你的答案再次出现: http://stackoverflow.com/questions/1487080/how-to-stop-processing-a-jsp-early 谢谢,对不起,混乱:) – 2009-09-28 13:38:45