我有一个基于Spring Security OAuth2的REST应用程序。我一直试图将默认的Spring Security消息传递格式从XML更改为JSON,并取得了部分成功。
对于eg--我知道了当请求不包含承载令牌时如何更改响应格式(下面一行就是这样做的)
<bean id="oauthAuthenticationEntryPoint" class ="c.s.m.security.CustomAuthenticationEntryPoint" />
{"error": "invalid_token","error_description": "Invalid access token: 144285e3-9563-420e-8ce"}
如何更改BadCredentialsException JSON格式?当前,它返回一个类似于上面的JSON?
下面是我的applicationcontext.xml
<sec:http pattern="/oauth/token" create-session="stateless"
use-expressions="true" authentication-manager-ref="authenticationManager">
<sec:csrf disabled="true" />
<sec:anonymous enabled="false" />
<sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
<sec:custom-filter ref="clientCredentialsTokenEndpointFilter" before="BASIC_AUTH_FILTER" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
<sec:authentication-manager alias="authenticationManager"
erase-credentials="false">
<sec:authentication-provider user-service-ref="clientDetailsUserService" />
</sec:authentication-manager>
<bean id="clientDetailsUserService" class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
<constructor-arg ref="clientDetails" />
</bean>
<!-- Entry point - Entry point Filter for token server -->
<bean id="clientAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="Oauth 2 security" />
<property name="typeName" value="Basic" />
</bean>
<bean id="clientCredentialsTokenEndpointFilter" class="org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>
<!-- Oauth handler Access Denied Handler -->
<bean id="oauthAccessDeniedHandler" class="c.s.m.security.CustomAccessDeniedHandler" />
<!-- class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" /> -->
<!-- Server resource -->
<sec:http pattern="/api/**" create-session="never"
entry-point-ref="oauthAuthenticationEntryPoint" use-expressions="true" >
<sec:csrf disabled="true" />
<sec:anonymous enabled="false" />
<sec:intercept-url pattern="/api/**" access="hasRole('ROLE_ADMIN')" />
<sec:custom-filter ref="resourceServerFilter"
before="PRE_AUTH_FILTER" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
<!-- Entry point resource -->
<bean id="oauthAuthenticationEntryPoint" class ="c.s.m.security.CustomAuthenticationEntryPoint" />
<oauth:resource-server id="resourceServerFilter" resource-id="springsec" token-services-ref="tokenServices" />
<bean id="tokenServices"
class="org.springframework.security.oauth2.provider.token.DefaultTokenServices" >
<property name="tokenStore" ref="tokenStore" />
<property name="supportRefreshToken" value="true" />
<property name="accessTokenValiditySeconds" value="300000" />
<property name="clientDetailsService" ref="clientDetails" />
</bean>
<bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.store.JdbcTokenStore">
<constructor-arg ref="dataSource" />
</bean>
<oauth:authorization-server client-details-service-ref="clientDetails" token-services-ref="tokenServices">
<oauth:authorization-code />
<oauth:implicit />
<oauth:refresh-token />
<oauth:client-credentials />
<oauth:password authentication-manager-ref="userAuthenticationManager" />
</oauth:authorization-server>
<sec:authentication-manager id="userAuthenticationManager">
<sec:authentication-provider ref="customUserDetailsService" />
</sec:authentication-manager>
在请求头中发送accept:application/json
将解决这个问题。
我有一些控制器方法,比如 roundRobinBean返回某个主机的WebClient。如果我得到连接超时异常或得到500响应,我需要调用另一个主机或从缓存返回数据。mono有一些处理程序来改变内部数据吗?
相当新的Spring开发者.. 过去几天我一直在使用Spring,并设法使用JPA和Spring Rest创建了一个简单的CRUD API。现在,我希望能够灵活地改变返回的JSON的组成方式。 例如,我有以下简单实体: GET请求返回以下JSON: 现在我想删除部分并添加其他内容。 这在Spring可能吗? 课程: FaqsCategory(实体) FaqsCategoryRepository
当通过URL调用我的Web应用程序中不存在的项目时,Spring会使用JSON响应,其中包含(时间、状态、错误、消息、路径)等数据。所以,我需要更改这个JSON的结构,特别是我需要删除路径。我该怎么做?我应该在我的项目中在哪里实现异常的自定义?向大家问好! json响应修改
我看了一下这个答案,但我不知道如何使它适应我的代码:reverfit应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是我的接口 定位响应
我一直试图用CakePHP 1.3实现ajax登录。我有一个简单的用户名/通行证登录弹出。 以下是我的视图/元素/登录。ctp: 以下是在我的控制器控制器/users_controller.php 上述控制器的视图位于视图/用户/ajax_login.ctp只有这一行: My Ajax具有以下代码: 现在,一切似乎都是完美的工作,然而,这总是失败到“错误”回调,我不知道为什么。我读过下面所有关于s