我有必须使用外接一个登录Seam应用。 逻辑如下:
- 我的应用程序将用户与外部SSO网址
- 用户做什么才能有鉴别
- 如果成功,外部应用程序与随机令牌重定向用户返回到我的应用程序
- 我的代码应与通过令牌通过HTTP接触外部应用程序和得到的回报完整的用户信息
很简单。 但我坚持。
重定向是来/缝/资源/令牌。 我打算在会议上获得认同,用令牌填充它,并进行身份验证。 但在资源处理用户会话显然是不可见的:会话的上下文为null。 :(
我试着做LifeCycle.beginCall那里,和它的作品在某种意义上:认证逻辑的作品,但结果永远不会提供给用户(用户会话仍具有空标识)。
我该怎么办错了吗?
PS这里是我的资源处理程序的更多或更少的完整代码。 日志记录和其他无关的东西为简洁移除。
@Scope(ScopeType.APPLICATION)
@Name("tokenResource")
// @BypassInterceptors
public class TokenResource extends AbstractResource {
@Override
public String getResourcePath() {
return "/token";
}
@Override
public void getResource(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
String token = request.getParameter("token");
// woot?
Lifecycle.beginCall();
Identity identity = Identity.instance();
MyIdentity mid = (MyIdentity) identity;
mid.setToken(token);
mid.login();
response.sendRedirect("/home.seam");
}