我正在使用Servlet3登录来验证网站中的用户我有这些登录
我已通过以下代码验证用户
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.login(username, password);
网站登录工作正常,因为用户提供了他/她的EMailId和密码,并将其存储在数据库中。
现在我修改了表并添加了更多列以将Facebookid保存在同一个用户表中,并且还为Facebook登录FacebookId的密码也作为密码工作。我将为Twitter做同样但我想要相同的Servlet3来验证用户。我怎样才能实现它?
并在context.xml
文件夹
META-INF
个文件
<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" />
还可以检查领域条目触发了哪个查询?
答案 0 :(得分:1)
首先,您不应该将各种身份验证因素归结为单个身份验证表
使用vanilla领域配置无法实现您想要实现的目标。你想要的是tomcat中可用的Combined Realm。
CombinedRealm
使您可以灵活地将多个数据源配置为auth源。
鉴于这种灵活性,您应该能够拥有单独的表facebook_auth
和twitter_auth
等等。为可能增长的auth源添加更多列到同一个表是不可持续的。