我正在建立自己的CAS。编写了一个身份验证处理程序,并对MySQL数据库进行了用户名/密码身份验证。我还添加了注册页面和相关逻辑。
现在我想让用户在注册为用户时自动登录。怎么做到这一点?
答案 0 :(得分:1)
上面的评论不正确 - CAS客户端不可以访问cookie,只有CAS服务器可以访问 - CAS 不是共享cookie协议。
如果您只有一个站点,则可以使用Java,Ruby的标准机制,无论您正在使用的平台,在客户端上创建会话。
如果要创建用于登录多个应用程序的SSO会话,基本上您需要:
要完成第一个,您可能需要修改CAS LoginFlow以允许您通过一次性令牌或类似机制对用户进行身份验证。
答案 1 :(得分:0)
这是我的实施。这个想法是从类org.jasig.cas.web.flow.AuthenticationViaFormAction借来的。
在我的网页控制器中处理解锁请求,该请求通常来自新用户的注册电子邮件。
String oneTimeAuthToken = this.userManager.generateOneTimeAuthToken(userEmail);
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials();
credentials.setUsername(userEmail);
credentials.setPassword(oneTimeAuthToken);
String tgt = centralAuthenticationService.createTicketGrantingTicket(credentials);
ticketGrantingTicketCookieGenerator.addCookie(request, response, tgt);
log.debug("Current user was unlocked and logged in.");
这背后的基础是创建一个类似临时密码的令牌来进行身份验证。当然,一旦身份验证成功,userManager就会自动清除此令牌。
希望这很清楚。如果你发现任何错误,请告诉我。