标签: spring

通过Spring进行RESTful身份验证

问题:
我们有一个基于Spring MVC的RESTful API,它包含敏感信息.应该保护API,但是不希望向每个请求发送用户的凭证(用户/通过组合).根据REST准则(和内部业务要求),服务器必须保持无状态.API将由mashup风格的方法由另一台服务器使用.

要求:

  • 客户端.../authenticate使用凭据向(未受保护的URL)发出请求; 服务器返回一个安全令牌,其中包含足够的信息,供服务器验证将来的请求并保持无状态.这可能包含与Spring Security的Remember-Me Token相同的信息.

  • 客户端对各种(受保护的)URL进行后续请求,将先前获得的令牌附加为查询参数(或者不太希望的是HTTP请求头).

  • 不能指望客户存储cookie.

  • 由于我们已经使用Spring,因此该解决方案应该使用Spring Security.

我们一直在试图让这项工作碰壁,所以希望那里的人已经解决了这个问题.

鉴于上述情况,您如何解决这一特殊需求?

java rest spring spring-mvc spring-security

253
推荐指数
3
解决办法
12万
查看次数

类型安全:未经检查的演员

在我的spring应用程序上下文文件中,我有类似的东西:

<util:map id="someMap" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.String">
    <entry key="some_key" value="some value" />
    <entry key="some_key_2" value="some value" />   
</util:map>
Run Code Online (Sandbox Code Playgroud)

在java类中,实现如下:

private Map<String, String> someMap = new HashMap<String, String>();
someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,我看到一条警告说:

类型安全:从Object到HashMap的未选中转换

我做错了什么?我该如何解决这个问题?

java spring unchecked type-safety

248
推荐指数
7
解决办法
34万
查看次数

如何在Spring Data中使用OrderBy和findAll

我正在使用spring数据,我的DAO看起来像

public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
    public findAllOrderByIdAsc();   // I want to use some thing like this
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,注释行显示了我的意图.Spring Data可以提供内置功能,使用这种方法通过ASC/DESC查找某些列的所有记录顺序吗?

spring spring-data spring-data-jpa

246
推荐指数
6
解决办法
25万
查看次数

多个Spring @RequestMapping注释

是否可以在方法中使用多个@RequestMapping spring注释?喜欢:

@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
 return("welcome");
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc url-routing request-mapping

237
推荐指数
5
解决办法
14万
查看次数

bean初始化完成后如何调用方法?

我有一个用例,我需要在ApplicationContext加载时只在bean中调用一个(非静态)方法.如果我使用MethodInvokingFactoryBean吗?或者我们有更好的解决方案?

作为旁注,我使用ConfigContextLoaderListener在Web应用程序中加载应用程序上下文.并希望,如果bean'A'被实例化,只需调用methodA()一次.

怎么能很好地做到这一点?

spring initialization startup applicationcontext

228
推荐指数
5
解决办法
29万
查看次数

Spring RestTemplate GET参数

我必须REST拨打包含自定义标头和查询参数的电话.我HttpEntity只用标题(没有正文)设置我,我使用RestTemplate.exchange()如下方法:

HttpHeaders headers = new HttpHeaders();
headers.set("Accept", "application/json");

Map<String, String> params = new HashMap<String, String>();
params.put("msisdn", msisdn);
params.put("email", email);
params.put("clientVersion", clientVersion);
params.put("clientType", clientType);
params.put("issuerName", issuerName);
params.put("applicationName", applicationName);

HttpEntity entity = new HttpEntity(headers);

HttpEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, params);
Run Code Online (Sandbox Code Playgroud)

这在客户端失败,dispatcher servlet无法解析对处理程序的请求.调试它后,看起来似乎没有发送请求参数.

当我POST使用请求正文进行交换而没有查询参数时,它可以正常工作.

有没有人有任何想法?

java rest spring

227
推荐指数
9
解决办法
35万
查看次数

BeanFactory与ApplicationContext

我是Spring Framework的新手,我一直在玩它并将一些示例应用程序放在一起,以便评估Spring MVC以用于即将到来的公司项目.到目前为止,我非常喜欢我在Spring MVC中看到的内容,看起来非常容易使用,并鼓励您编写非常适合单元测试的类.

就像练习一样,我正在为我的一个示例/测试项目编写一个主要方法.我不清楚的一件事是BeanFactory和之间的确切差异ApplicationContext- 适合在哪些条件下使用?

我理解ApplicationContext扩展BeanFactory,但如果我只是编写一个简单的主方法,我是否需要ApplicationContext提供额外的功能?究竟是什么类型的额外功能ApplicationContext提供了?

除了回答"我应该在main()方法中使用哪个"之外,对于在这种情况下我应该使用哪种实现,是否有任何标准或指南?我的main()方法是否应该依赖于bean /应用程序配置以XML格式编写 - 这是一个安全的假设,还是我将用户锁定为特定的东西?

这个答案是否会在网络环境中发生变化 - 如果我的任何课程需要了解Spring,他们是否更有可能需要ApplicationContext

谢谢你的帮助.我知道很多这些问题可能在参考手册中得到了解答,但是我很难找到这两个界面的明确细分以及每个界面的优点/缺点而不通过精细梳齿阅读手册.

spring managed-bean applicationcontext

221
推荐指数
12
解决办法
22万
查看次数

Spring @Autowired用法

在一个将由Spring连接的类中使用@Autowired的优缺点是什么?

为了澄清,我正在谈论@Autowired注释,而不是XML中的自动连线.

我可能只是不理解它,但对我来说它几乎看起来像一个反模式 - 你的类开始意识到它们与DI框架相关联,而不仅仅是POJO.也许我是一个贪婪的惩罚,但我喜欢有bean的外部XML配置,我喜欢有明确的布线,所以我确切知道什么是连线在哪里.

java spring autowired

217
推荐指数
4
解决办法
7万
查看次数

如何使用mockMvc检查响应体中的String

我有简单的集成测试

    @Test
public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() throws Exception {
    mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON)
            .content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}"))
            .andDo(print())
            .andExpect(status().isBadRequest())
            .andExpect(?);
}
Run Code Online (Sandbox Code Playgroud)

在最后一行中,我想将响应体中收到的字符串与期望的字符串进行比较

作为回应,我得到:

MockHttpServletResponse:
          Status = 400
   Error message = null
         Headers = {Content-Type=[application/json]}
    Content type = application/json
            Body = "Username already taken"
   Forwarded URL = null
  Redirected URL = null
Run Code Online (Sandbox Code Playgroud)

尝试使用content(),body()但没有任何效果.

java spring mocking spring-test-mvc

214
推荐指数
10
解决办法
24万
查看次数

从属性文件中读取List并使用spring注释加载@Value

与此问题类似:http://forum.springsource.org/showthread.php?111992-Loading-a-list-from-properties-file-using-Value-annotation(对此没有回复)

我想在.properties文件中有一个值列表,即:

my.list.of.strings=ABC,CDE,EFG
Run Code Online (Sandbox Code Playgroud)

并直接加载到我的班级,即:

@Value("${my.list.of.strings}")
private List<String> myList;
Run Code Online (Sandbox Code Playgroud)

据我所知,这样做的另一种方法是将它放在spring配置文件中,并将其作为bean引用加载(如果我错了,请纠正我),即

<bean name="list">
 <list>
  <value>ABC</value>
  <value>CDE</value>
  <value>EFG</value>
 </list>
</bean>
Run Code Online (Sandbox Code Playgroud)

但有没有办法做到这一点?使用.properties文件?ps:如果可能的话,我想用任何自定义代码执行此操作.

java spring spring-properties

212
推荐指数
10
解决办法
25万
查看次数