我正在使用Spring 4.1.6和entries
构建一个restful API。
为了使其余的功能完全正常,我需要最后一块拼图:安全性。现在我注意到Spring有它自己的spring-boot-starter-data-rest
包可以帮助完成这项任务。
我尝试使用spring-security-*
和spring-security-config
,它就像一个魅力,但是如果用户未经过身份验证,则spring会将用户重定向到登录,从而提供HTML登录表单。
因为它是Restful API,所以如果用户缺少凭据或者没有足够的权限来读取特定资源,我只需要在JSON对象中返回错误。
我确定我不是第一个提出这个问题的人,并且在网上搜索过那些问同样事情的人,但是找不到我想要的东西。所以..我应该继续我的研究,以保证弹簧安全,或者我应该找到什么?
欢迎任何建议, 谢谢
答案 0 :(得分:1)
要将登录表单响应更改为自定义Http响应,您需要为Http Security配置配置自定义http响应处理程序。如果您使用xml作为安全配置,请使用下面显示的配置,使用的failureHandler
是Spring Security软件包中提供的配置。更新网址以匹配您的网址。
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- Rest authentication entry point configuration -->
<http use-expressions="true" entry-point-ref="restAuthenticationEntryPoint">
<intercept-url pattern="/api/**" />
<sec:form-login authentication-failure-handler-ref="myFailureHandler" />
<logout />
</http>
<!-- Using default failure handler -->
<beans:bean id="myFailureHandler"
class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler" />
</beans:beans>