我正在使用JBoss爲基於Flex的RIA提供一堆RESTful服務。無論如何,我通過一些痛苦來實現登錄(使用基於表單的登錄),但我很努力地提供一種RESTful方法來登錄用戶。 在JSP中我可以簡單地調用類似:通過RESTful調用(無效會話)註銷用戶
session.invalidate()
我怎樣才能做到這一點與JBoss,RestEasy的使用無狀態會話bean實現RESTful服務?
我正在使用JBoss爲基於Flex的RIA提供一堆RESTful服務。無論如何,我通過一些痛苦來實現登錄(使用基於表單的登錄),但我很努力地提供一種RESTful方法來登錄用戶。 在JSP中我可以簡單地調用類似:通過RESTful調用(無效會話)註銷用戶
session.invalidate()
我怎樣才能做到這一點與JBoss,RestEasy的使用無狀態會話bean實現RESTful服務?
後有點googeling的我創建了一個解決方案:
這是我的RESTful服務bean的本地接口:
@Local
@Path("/Rest")
public interface SessionController {
...
@GET
@Path("/logout/")
@Produces("text/xml")
String logout(@Context HttpServletRequest req);
}
而這正是實現:
@RolesAllowed({ "TheBoss", "SomeUser", ... })
@SecurityDomain("mysqlLogin")
@Stateless
public class SessionControllerBean implements SessionController {
...
public String logout(@Context HttpServletRequest req) {
...
req.getSession().invalidate();
return "SUCCESS";
}
}
漂亮就像你看到的那樣簡單。正如我可能已經想象已經依賴注入是一個竅門。通過@Context註釋,我可以要求JBoss注入HTTPServletRequest,我可以從中獲取會話並調用invalidate。
該bean通過resteasy被稱爲RESTful服務。
在使用Java EE進行開發時,我發現我花費更多時間來跟蹤如何在所有這些xml文件(maven配置是純粹的地獄)中配置東西,要使用哪個API以及注入的方式和實際開發功能。
此方法不適用於單點登錄模式。我與Jboss有問題 – vanduc1102
你是否在會話中保存數據? –
我沒有在會話中保留任何數據。我只需要它進行身份驗證。 – Christoph
你在使用什麼安全服務?你在使用Spring Security嗎?你有沒有推出自己的登錄服務?換句話說,您的應用程序是直接訪問會話還是通過其他服務間接訪問它? – Pace