我正在使用Spring security 3.2并具有此配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers()
.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN))
.and()
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.rememberMe()
.rememberMeServices(rememberMeServices())
.key(env.getProperty("security.rememberme.key"))
.and()
.formLogin()
.loginProcessingUrl("/app/authentication")
.successHandler(ajaxAuthenticationSuccessHandler)
.failureHandler(ajaxAuthenticationFailureHandler)
.usernameParameter("j_username")
.passwordParameter("j_password")
.permitAll()
.and()
.logout()
.logoutUrl("/app/logout")
.logoutSuccessHandler(ajaxLogoutSuccessHandler)
.deleteCookies("JSESSIONID")
.permitAll()
.and()
.addFilter(basicAuthenticationFilter(basicAuthenticationEntryPoint(), authenticationManager()))
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/login/**").permitAll()
.antMatchers("/logout/**").permitAll()
.antMatchers("/super_admin/**").hasRole("ADMIN")
.antMatchers("/administration/**").hasRole("ADMIN")
.antMatchers("/*").permitAll()
.antMatchers("/app/**").authenticated();
当我以具有角色ADMIN的用户身份登录并且我正在访问http://mydomain:8080/super_admin
和http://mydomain:8080/#/administration
时,这不会被阻止。 (工作正常)
但是,如果我以没有角色ADMIN的用户身份登录,则会阻止http://mydomain:8080/super_admin
,但我仍然可以访问http://mydomain:8080/#/administration
。
#有问题吗?
我如何阻止http://mydomain:8080/#/administration
感谢您的任何反馈。
答案 0 :(得分:1)
#
之后的值未发送到服务器。您必须使用一些JavaScript来检查用户是否可以访问该页面。
答案 1 :(得分:0)
Evgeni是正确的,#之后的值称为URL的片段或锚点部分,并且由Web浏览器而不是服务器使用。
片段网址http://en.wikipedia.org/wiki/Hurricane_Ginger#Impact的示例。此链接将带您进入Hurricane_Ginger标题Impact