我在网站上使用Servlet3登录来认证用户,我有这些登录
- 网站正常登录(填写报名表格)
- Facebook登录(来自Facebook Id)
- Twitter Login (From Twitter)
我已经通过下面的代码验证了用户
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
request.login(username, password);
它是工作良好的网站登录作为用户给了他/她的EMailId和密码,它存储在数据库。
现在我修改了表,并添加了更多的列,以保存Facebook在同一用户表和密码为Facebook登录Facebook的工作作为密码以及。我将为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" />
还可以检查哪个查询由领域条目触发?
首先,您不应该将各种验证因素合并到一个验证表中
你试图实现的是不可能与香草领域配置。您需要的是tomcat中可用的组合域。
CombinedRealm
使您能够灵活地将多个数据源配置为验证源。
考虑到这种灵活性,您应该能够拥有单独的表facebook_auth
和twitter_auth
等。在同一个表中为可能越来越多的验证源添加更多的列是不可持续的。