为admin和user配置两个不同的userDetailsS​​ervices,两个子上下文

时间:2016-08-19 15:13:39

标签: java spring spring-mvc

我有一个用户登录表单,另一个用于admin。我想,使用ROLE_USER的用户只能从用户的表单登录,而admin只能从admin的表单登录。我认为正确的解决方法是创建userDetailsS​​ervice的第二个实现。为此,我必须为不同的路径创建两个不同的调度程序servlet,但据我所知,我必须在两个不同的子上下文(调度程序servlet)中创建两个不同的authenticationManagers。这是对的吗? 或者说我请在春天创建管理部分的正确决定。任何帮助表示赞赏)

Two different authenticationManagers for two different dispatcherServlet我试图在子上下文中覆盖authenticationManager,一个用户回答我这是不可能的。但正如文档中所说:

  

在Web MVC框架中,每个DispatcherServlet都有自己的   WebApplicationContext,它继承了已定义的所有bean   根WebApplicationContext。根WebApplicationContext应该   包含应在其间共享的所有基础结构bean   您的其他上下文和Servlet实例。这些继承的bean可以   在特定于servlet的范围内被覆盖,您可以定义新的   给定Servlet实例本地的特定于范围的bean。

我无法理解

之间的区别
  

在子环境中覆盖bean(用户回答我是不可能的)

  

继承的bean可以在特定于servlet的范围中重写

请解释我这个)

1 个答案:

答案 0 :(得分:0)

如果这些是登录表单,您如何知道在登录他们将拥有什么角色的人之前?那你怎么能确定一个未经身份验证的人是否应该使用用户登录表单而不是管理员登录表单?就像Florian所说的那样,您应该能够使用单一表单完成两种类型用户的日志记录。

如果要基于用户拥有的角色来授权访问端点,我认为这是您真正需要的,您需要创建一个扩展WebSecurityConfigurerAdapter的配置类并覆盖配置( HttpSecurity)方法。这是一个简单的例子:https://github.com/wkorando/hateoas-demo-II/blob/master/src/main/java/com/hateoas/demo/config/SpringSecurityConfiguration.java