java - 创建通用 Serverlet3 登录的逻辑

标签 java tomcat jsf

我在网站上使用 Servlet3 登录来验证用户我有这些登录

  1. 网站正常登录(填写注册表格)
  2. Facebook 登录(来自 Facebook Id)
  3. Twitter 登录(来自 Twitter)

我已经通过以下代码对用户进行了身份验证

 HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
       request.login(username, password);

网站登录工作正常,因为用户提供了他/她的 EMailId 和密码并将其存储在数据库中。

现在我修改了表并添加了更多列以将 Facebookid 保存在同一个用户表中,并将 Facebook 登录密码 FacebookId 也用作密码。我会为 Twitter 做同样的事情,但我想要相同的 Servlet3 来验证用户。我怎样才能实现它?

并且还在 META-INF 文件夹中添加了 context.xml 文件

<Realm localDataSource="true" debug="99"
    className="org.apache.catalina.realm.JDBCRealm" connectionName="user"
    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" />

还可以检查领域条目触发的查询吗?

最佳答案

首先,您不应该将各种身份验证因素混为一谈

您想要实现的目标在普通领域配置中是不可能的。你想要的是 Combined Realm在tomcat中可用。

CombinedRealm 让您可以灵活地将多个数据源配置为身份验证源。

鉴于这种灵 active ,您应该能够拥有单独的表 facebook_authtwitter_auth 等等。为可能越来越多的身份验证源向同一个表添加更多列是不可持续的。

关于java - 创建通用 Serverlet3 登录的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197722/

相关文章:

rest - Tomcat v7.0 服务器不读取 context.xml

jsf - 用于 JSF 的服务器端 HTML sanitizer /清理

Java EE 与 .NET 集成以进行身份​​验证

Java检测客户端与服务器的断开连接

web-services - spring boot部署外部tomcat

maven - grails missingmethodexception with maven build and run on tomcat (standalone tomcat server)

jsf - h :selectOneRadio renders all select items in one line, 如何在新行中渲染每个?

java - 在JSF中,如何使h :commandButton to send only one field?

java - Oracle Database 12.2.0.1 JDBC 驱动程序是否有错误?

java - 如何使用 twitter4j 有效地获取多个用户时间线?