标签: spring-mvc

使用Spring Security时,获取bean中当前用户名(即SecurityContext)信息的正确方法是什么?

我有一个使用Spring Security的Spring MVC Web应用程序.我想知道当前登录用户的用户名.我正在使用下面给出的代码段.这是接受的方式吗?

我不喜欢在这个控制器中调用静态方法 - 这违背了Spring的全部目的,恕我直言.有没有办法配置应用程序以注入当前的SecurityContext或当前的身份验证?

  @RequestMapping(method = RequestMethod.GET)
  public ModelAndView showResults(final HttpServletRequest request...) {
    final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
    ...
  }
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security

280
推荐指数
9
解决办法
17万
查看次数

通过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 @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万
查看次数

Spring Security中角色与GrantedAuthority的区别

有概念和实现Spring Security的,如GrantedAuthority界面得到一个权威授权/控制的访问.

我希望这是允许的操作,例如createSubUsersdeleteAccounts,我允许管理员(带角色ROLE_ADMIN).

我在网上看到的教程/演示让我感到困惑.我尝试连接我读到的内容,但我认为我们可以互换地对待这两者.

我看到hasRole消费了一个GrantedAuthority字符串?我肯定在理解上做错了.这些概念在Spring Security中是什么?

如何存储用户的角色,与该角色的权限分开?

我也在查看在org.springframework.security.core.userdetails.UserDetails身份验证提供程序引用的DAO中使用的接口,它使用了一个User(注意最后的GrantedAuthority):

public User(String username, 
            String password, 
            boolean enabled, 
            boolean accountNonExpired,
            boolean credentialsNonExpired, 
            boolean accountNonLocked, 
            Collection<? extends GrantedAuthority> authorities)
Run Code Online (Sandbox Code Playgroud)

或者还有其他方法可以区分其他两个吗?或者它不受支持,我们必须自己制作?

java spring spring-mvc spring-security

209
推荐指数
4
解决办法
10万
查看次数

如何在Spring MVC中处理静态内容?

我正在使用Spring MVC 3开发一个webapp,并且DispatcherServlet像'so'一样捕获所有请求(web.xml):

  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

现在这可以像宣传的那样工作,但是我如何处理静态内容呢?以前,在使用RESTful URL之前,我会抓住所有*.html并将其发送给DispatcherServlet,但现在它是一个不同的球类游戏.

我有一个/ static /文件夹,其中包含/ styles /,/ js /,/ images/etc,我想从中排除/ static/*DispatcherServlet.

现在,当我这样做时,我可以获得静态资源:

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但我希望它有很好的URL(我使用Spring MVC 3)而不是登陆页面www.domain.com/app/

我也不希望解决方案耦合到tomcat或任何其他servlet容器,并且因为这是(相对)低流量我不需要网络服务器(如apache httpd)infront.

有一个干净的解决方案吗?

spring-mvc

197
推荐指数
9
解决办法
21万
查看次数

Spring MVC和Spring Boot之间的区别

我刚开始学习Spring.在下一步中,我想开发更大的Web应用程序.现在我想知道我是否应该从Spring Boot或Spring MVC开始.我已经阅读了一些东西,但它有点令人困惑,因为两者看起来都很相似.那么这两者有什么不同呢?

spring spring-mvc spring-boot

189
推荐指数
11
解决办法
15万
查看次数

在Spring-MVC控制器中触发404?

如何让Spring 3.0控制器触发404?

我有一个控制器,@RequestMapping(value = "/**", method = RequestMethod.GET)有些URL访问控制器,我希望容器能够提供404.

java spring spring-mvc

182
推荐指数
9
解决办法
13万
查看次数

Spring MVC中ApplicationContext和WebApplicationContext有什么区别?

应用程序上下文和Web应用程序上下文有什么区别?

我知道WebApplicationContext用于面向Spring MVC架构的应用程序?

我想知道ApplicationContextMVC应用程序有什么用?什么样的豆类定义ApplicationContext

spring spring-mvc applicationcontext

180
推荐指数
4
解决办法
14万
查看次数

什么是Spring中的Dispatcher Servlet?

在这张图片中(我从这里得到),HTTP请求向Dispatcher Servlet发送了一些内容.

在此输入图像描述

我的问题是Dispatcher Servlet的作用是什么?

是否就像从网页上抛出信息并将其丢给控制器?

java spring spring-mvc

176
推荐指数
5
解决办法
18万
查看次数

Spring MVC:复杂对象为GET @RequestParam

假设我有一个列出表中对象的页面,我需要放置一个表单来过滤表.过滤器作为Ajax GET发送到如下URL:http://foo.com/system/controller/action?page = 1&prop1 = x&prop2 = y&prop3 = z

而不是在我的控制器上有很多参数,如:

@RequestMapping(value = "/action")
public @ResponseBody List<MyObject> myAction(
    @RequestParam(value = "page", required = false) int page,
    @RequestParam(value = "prop1", required = false) String prop1,
    @RequestParam(value = "prop2", required = false) String prop2,
    @RequestParam(value = "prop3", required = false) String prop3) { ... }
Run Code Online (Sandbox Code Playgroud)

假设我有MyObject:

public class MyObject {
    private String prop1;
    private String prop2;
    private String prop3;

    //Getters and setters
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

@RequestMapping(value = "/action") …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc

175
推荐指数
4
解决办法
17万
查看次数