使用spring security

时间:2017-01-28 17:31:32

标签: angularjs spring spring-boot spring-security

我正在尝试使用AngularJS 1.x,Spring Boot REST和Spring Security构建一个应用程序。虽然我对Spring REST本身有中级知识,但我对AngularJS和Spring Security都很陌生。 我已经给出了我迄今为止开发的应用程序的github链接。它仍然是骨架形式,没有任何效果:

https://github.com/imrnk/touchinghand

我将列出下面的问题和困惑:

1)我正在使用ui-router状态从一个状态导航到另一个状态。到目前为止,我已经确定了两个状态:“登录”页面和从那里到“注册”页面的链接。一旦用户登录,她将登陆仪表板。但是这个仪表板尚未创建。 现在这个login.html可以说是应用程序的入口点。当我输入localhost:8080 /它应该重定向到localhost:8080 / login。现在我可以看到页面正确地重定向到login.html但是我在login.html中使用的模板(login.template.html或register.template.html)没有加载......但是,当我正在运行时使用browsersync的节点js,我看到页面正在加载其中的所有内容。

2)我尝试禁用spring security,然后我看到登录页面已正确加载。所以我猜这可能是一个春天安全问题,但究竟是什么问题我无法弄清楚。 我在WebSecurityConfigurerAdapter实现中的HttpSecurity配置如下所示:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/", "/login", "/register", "/**/*.css", 
                        "/**/*.js", "/**/**/*.css", "/**/**/*.js",
                        "/**/**/**/*.css", "/**/**/**/*.js", 
                        "/**/**/**/**/*.css", "/**/**/**/**/*.js", "/**/home.html", "**/login.html",
                        "**/**/login.template.html", "**/**/registration.template.html")
                .permitAll().
                regexMatchers("/registration*")
                .permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage("/login").permitAll()
                .and()
                .logout().permitAll();
    }

我的MvcConfig看起来像这样:

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        registry.addResourceHandler("classpath:/resources/static/css/**")
                .addResourceLocations("classpath:/resources/static/css/");
        registry.addResourceHandler("classpath:/resources/js/**").addResourceLocations("classpath:/resources/js/");
        registry.addResourceHandler("classpath:/resources/static/**")
                .addResourceLocations("classpath:/resources/static/");
        registry.addResourceHandler("classpath:/resources/static/templates/**")
                .addResourceLocations("classpath:/resources/static/templates/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        super.addViewControllers(registry);
        registry.addViewController("/").setViewName("forward:/login");
        //registry.addViewController("/login").setViewName("forward:/login");
        registry.addViewController("login.html");
        //registry.addViewController("register").setViewName("registration");
        // registry.addViewController("/registration.html");
        //registry.addViewController("/dashboard").setViewName("dashboard");
        //registry.addViewController("/dashboard.html");
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("static/");
        resolver.setSuffix(".html");
        registry.viewResolver(resolver);
    }
}

作为@Controller进行分配的我的LoginController类具有:

 @RequestMapping(value={"/"}, method = RequestMethod.GET)
  public String showLogin(Model model){
    model.addAttribute("user", new UserDTO());
    return "/login";
  }

3)我对解析后的视图的名称以及如何使用角度模板html进行映射感到很困惑。

我怀疑,可能是我遵循纯粹的REST方法,并且在Spring MVC和Spring REST的某些方面处于中间位置。 Spring Security的引入也增加了现在的问题。

我还附加了firefox开发者网络截图,如果这可以帮助

enter image description here

请帮助我。感谢。

0 个答案:

没有答案