0

我需要在以下位置实现用户身份验证:

  1. 用户得到一个链接,在链接上有一个令牌加密他的一些详细信息(id 等)和到期时间 ==> 这个 URL 在我的应用程序之外并且已经实现
  2. 当用户点击链接时,我需要解密令牌并解析数据,但我不需要将它与数据库中的数据进行比较。只检查时间没有过期并取出数据(id等)

你能指导我使用哪些类吗?我已经阅读了很多,现在我认为我需要扩展 AbstractPreAuthenticatedProcessingFilter 以从 URL 中获取令牌并对其进行解密,但我不确定身份验证提供程序,以及是否需要 userService 实现?

谢谢!

编辑:

我一直在阅读更多内容,现在我不确定我是否需要 PreAuthenticated 类,因为它不像用户之前已经过身份验证,我仍然需要对他进行身份验证。身份验证实际上是看到解密有效并且尚未达到到期时间。你有什么建议?我开始编写自己的过滤器(扩展 AbstractAuthenticationProcessingFilter),然后我看到我需要自己的 AuthenticationToken 实现,因为 UsernamePasswordAuthentication 不适合我,然后在提供程序中我也找不到真正适合的东西。

任何帮助都将不胜感激。我正在考虑只扩展 AbstractAuthenticationProcessingFilter 但不使用身份验证管理器,因为它只会让我变得更复杂。你怎么看?

4

1 回答 1

0

这是您可以使用的一种方法:

1) 扩展“GenericFilterBean”以创建您自己的安全过滤器,然后您可以在您的“http”配置中将其用作“自定义过滤器”。

2) 可选:根据您的需要,您可以实现自己的“UserDetails”,这非常简单。

3) 可选:您可以将“PreAuthenticatedAuthenticationToken”用于“身份验证”实施。

4)在过滤器中,您可以查找是否存在适当的参数,尝试解密信息。如果出现任何问题,抛出一个 Authentication Exception 并在接下来描述的入口点处理它。

5) 可选:如果成功,您可以将 UserDetails 对象包装在 PreAuthenticatedAuthenticationToken 中并将其设置为安全上下文持有者。

6) 实现“AuthenticationEntryPoint”并覆盖“commence”以清除安全上下文/会话,处理自定义过滤器中的 AuthenticationException 和/或重定向/调度到视图。将此作为您的切入点。

于 2013-03-04T16:26:52.703 回答