2014-06-08 59 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