我有mongodb基础用户和密码。我有一个带有授权表单的jsp文件。 过滤器应该检查 - 授权用户与否。如果未经授权,Servlet应授权用户。
请举例说明如何操作。
答案 0 :(得分:1)
这是一个场景: -
User
个对象。User
对象,请允许用户访问受保护的页面。User
对象不存在,请将用户重定向到登录页面。当用户从登录页面提交凭证时: -
User
对象并显示欢迎页面。答案 1 :(得分:0)
Java EE实现通常允许您设置login modules
。这些包含用于对许多不同系统进行身份验证的实际代码。这些包括本地XML文件,数据库,LDAP,Kerberos以及其他许多文件。
您不必自己编写,已经为您提供了这些内容。
您的代码仅触发身份验证(或声明要保护的资源以及Java EE为您触发身份验证),并且对实际身份验证机制一无所知。实际身份验证通常在代码之外配置。一些Java EE实现允许您在EAR中指定它(例如,通过Jboss AS上的-service.xml文件)。
潜在的缺点是这些模块特定于您的Java EE实现(例如JBoss AS,Glassfish等)。如果在代码之外进行配置,则有人必须为要运行代码的每个不同Java EE应用程序服务器重新执行此操作。
接下来,Java自动为您启动身份验证的方式(声明性安全性)相当粗糙。更多情况下,触发它是以编程方式完成的,因此您可以更好地控制登录框的工作方式以及何时完成。
请参阅以下内容,了解如何执行此操作:http://it-result.me/servlet-3-programmatic-authentication-api/
或者,确实还有limc解释的方式。通过这种方法,您完全忽略了Java EE为此提供的API,并且只需构建自己的代码,这些代码通常会查询数据库并将某些对象存储到HTTP会话中。这里的缺点是您的安全上下文不会自动传播,您必须手动传递此对象或提供需要通过访问HTTP会话来检查身份验证的代码。
特别是对于访问HTTP会话的业务bean来说,这是一种不好的做法。
最后,Seam 3承诺为安全问题构建便携式CDI扩展,如果/何时可用,这可能是一个很大的帮助。