2016-01-30 61 views
0

我正在开发一个在客户端使用Extjs-6的Web应用程序,在服务器端使用spring RESTFUL。我如何在春天实现安全?

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

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

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

我该如何实现这个弹簧安全

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

回答

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 Security认证

+0

我已经在这些链接之前阅读,没有解决不了的问题。 –

+0

@morteza malvandi向我们展示你到现在为止做了些什么,如代码片段或其他内容。也许这可以帮助。 – Ashyboy