如何在spring restful中实现安全性?

时间:2016-01-30 12:26:20

标签: spring extjs spring-security restful-architecture

我在客户端使用Extjs-6开发Web应用程序,在服务器端使用spring RESTFUL开发Web应用程序。

我的服务器应用程序 RESTFUL 。春季申请中我甚至没有一页。

客户端向服务器发送AJAX请求,然后服务器响应它。我想在我的应用中添加身份验证授权。当用户打开Web应用程序(Extjs页面)时,它会发送一个Ajax请求,看它是否可以转到仪表板页面?服务器只能获得truefalse。如果服务器返回true,则Extjs可以请求数据用户。但如果服务器返回false,它将转到登录页面。在登录页面中,用户输入usernamepassword,然后单击登录按钮,然后发送ajax请求登录。

在服务器端,收到每个请求,检查用户是否登录,返回合适的响应,否则返回405错误。

如何使用 spring security 实现此功能?

注意
我不想使用基本身份验证。我想用Extjs创建一个登录表单,然后发送身份验证的Ajax请求。

1 个答案:

答案 0 :(得分:0)

我假设您具有Spring Security的基本知识。

使用Spring安全性的典型Web应用程序,它对用户进行身份验证,并根据结果决定是发送安全页面(如果成功)还是发送登录页面(如果不成功)。

但在这种情况下,即在REST应用程序中,响应通常采用JSON格式。所以我们无法将视图/页面发送回客户端。我们需要发送JSON。

您可以做的是覆盖并实施您自己的自定义身份验证处理程序和身份验证入口点。在这些自定义处理程序中,您可以将自定义JSON响应发送给客户端。

您可以实现以下界面:

  • AuthenticationEntryPoint:验证失败时调用。返回401 UNAUTHORIZED状态。
  • AuthenticationSuccessHandler:您可以使用onAuthenticationSuccess方法处理成功的身份验证响应。
  • AuthenticationFailureHandler:顾名思义,它用于处理身份验证失败。使用onAuthenticationFailure方法来确定您的失败响应。
  • LogoutSuccessHandler:使用onLogoutSuccess方法自定义您的退出行为。

示例:
Secure REST Services Using Spring Security
AuthenticationFailureHandler
AuthenticationSuccessHandler

您可以查看this链接以实现无状态Spring安全身份验证