JAAS,从容器外部进行登录
|
我有一个使用JAAS的应用程序,我需要从旧版进行外部登录,因此我用下面的代码编写了一个Servlet,它可以正常工作,但是当我再次提交时,JAAS再次尝试进行身份验证并失败,并且用户重定向到登录页面。
这是doPost方法:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
NfWebCallbackHandler callbackHandler = new NfWebCallbackHandler(req);
LoginContext loginContext = null;
boolean loginSuccess = true;
try {
loginContext = new LoginContext(\"MyLoginContext\", callbackHandler);
loginContext.login();
} catch (LoginException e) {
loginSuccess = false;
RequestDispatcher dispatcher = req
.getRequestDispatcher(\"/login.jsf\");
dispatcher.forward(req, resp);
e.printStackTrace();
}
if (loginSuccess) {
RequestDispatcher dispatcher = req.getRequestDispatcher(req
.getParameter(\"targetUrl\"));
dispatcher.forward(req, resp);
}
}
任何想法都欢迎!谢谢!
没有找到相关结果
已邀请:
2 个回复
攫怂绵十
不会返回主题,也不能使用
覆盖主题。需要时,可以从此会话字段中检索主题,并由容器用于各种目的;例如,当您在
对象上调用
或
时,实际上与主题关联的Principal会返回结果。 如果您需要让容器来完成所有这些繁重的工作,则需要将JAAS登录模块与容器管理的身份验证方案结合使用。如果您不想这样做,则需要在会话期间“记住”主题和主体。不要忘记,所有这些都必须以安全的方式完成。
帆攀缺锯欧
我不记得我在哪里找到的,但是非常有用! Thanx Vineet Reynolds,唯一一位试图帮助我的人