2010-03-19 56 views
0

我用jdbcRealm在我的Web應用程序,它的正常工作Servlet的安全問題。我也在我的web.xml中定義了所有約束。像url模式/ Admin/*的所有頁面都應該僅由admin訪問。我有一個使用標準j_security_check,j_username和j_password的登錄表單。約j_security_check,爲j_username和爲j_password

現在,當我鍵入管理員/ home.jsf它正確地重定向我login.jsf還有當我鍵入密碼我正在重定向到home.jsf。這工作正常,但問題來了,我直接去login.jsf,然後輸入密碼和用戶名。這次它再次將我重定向到login.jsf。有什麼辦法可以指定當成功登錄時哪個頁面去?我需要爲不同的角色指定不同的頁面。對於管理員來說,對於一般用戶來說,它是/Admin/home.jsf,因爲登錄表單是在不同類型的用戶之間共享的,因此它是/General/home.jsf。我在哪裏指定所有這些東西?

其次,我想有在登錄表單的結尾記得我複選框。我該怎麼做呢?默認情況下,它被提交給j_security_check servlet,我無法控制它的執行。請幫忙。這似乎並不難,但看起來像我失去了一些東西。

回答

0

我找到了自己問題的答案。這是任何未來在這個線程上的新手。好的,我經過深思熟慮後找到的解決方案是,我創建一個文件夾和一個jsp頁面,並聲明flag.jsp。接下來,我將它授予所有角色。現在

,你可能想知道那樣有什麼好處呢?:)好了,只要按照它,你可以這樣做的。 :P

下一步在歡迎文件在web.xml中提到這個文件的URL。因此,當應用程序啓動時,它會去這個URL和容器會發現我未經身份驗證,因此重定向到登錄頁面。而已。現在,最後一部分是您可以在我們的共享角色jsp文件中編寫簡單的腳本並根據角色重定向到主頁。例如,如果httpservletrequest#isUserInRole(「Admin」)然後重定向到「/admin/home.jsf」等。

那麼,這是不是那麼有效,但重要的是,它的作品! :)。這個想法今天無意中碰到了我。我想,現在我可以輕鬆地休息和使用容器管理的安全性。靜候你的評價。