我正在尝试通过 Sevlet3 对用户进行身份验证,Java 类中的这段代码也是如此
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
try {
request.login(user, password);
} catch (ServletException e) {
}
我在 Tomcat server.xml 文件中创建了这个条目
<Realm localDataSource="true" debug="99"
className="org.apache.catalina.realm.JDBCRealm" connectionName="hariom"
connectionPassword="password" connectionURL="jdbc:mysql://localhost:3306/ccc"
digest="md5" driverName="com.mysql.jdbc.Driver" roleNameCol=role_name"
userCredCol="password" userNameCol="email_id"
userRoleTable="users_list" userTable="user_list_view" />
在上面的代码中,users_list
是数据库表,user_list_view
是数据库 View ..现在我想知道这段代码是如何调用的,以及登录方法触发了哪个查询这样我就可以检查我的问题或者我做了一些错误的配置。那么如何知道将触发哪个查询以及登录方法将如何对用户进行身份验证?
最佳答案
容器(Tomcat 服务器)负责处理身份验证(使用标准 JAAS),您不必编写任何代码(嗯,最多一个 HTML 页面用于向用户询问数据并将其传递给容器(如果您使用的是 FORM 身份验证)。
容器将知道要使用的安全领域,因为它将在配置文件中定义(不是 web.xml
,但每个容器使用不同的;Tomcat 使用 META-INF/context.xml
)
当 Web 应用程序的身份验证数据传递给容器时,它会从 context.xml
文件中获取要使用的领域,并从该领域调用模块。
http://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment.html http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context
注意:J2EE 容器功能强大,但复杂。您将节省大量阅读手册的时间,并且至少了解他们管理的问题。
关于java - Sevlet3 登录方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24096472/