2014-06-08 46 views
1

我使用Servlet3登录验证用户的网站,我有这些登录逻辑来创建共同Serverlet3登录

  1. 网站正常登录(填写Sigup形式)
  2. 的Facebook登录(从Facebook的帐号)
  3. Twitter的登录(从Twitter)

而且我已经通过下面的代码验证用户

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

也许更适合SO – kolossus

回答

1

首先,你不应该一概而论的各种权威性因素成一个单一的权威性表

什么你想做到的,是不可能的香草领域配置。你想要的是在tomcat中可用的Combined Realm

CombinedRealm为您提供了将多个数据源配置为auth源的灵活性。

考虑到灵活性,你应该可以有一个单独的表facebook_authtwitter_auth和更多。将更多的列添加到同一个表中的可能数量越来越多的身份验证源是不可持续的。

+0

但这里user_list_view是一个数据库视图,其获得..Can有可能获得通过的tomcat –

+0

@ subodh-的RELM进入运行哪些查询不,我所知道用户的所有细节的。显然它只是选择用户名并验证密码。你需要查询什么?这不像你将能够改变它,或者它是一个复杂的查询。 – kolossus