我的应用程序网址为http://219.41.192.244:8080/KanaApp/login-用户进入登录页面
登录是第一页,只有用户才能访问该应用程序。
但是,如果用户输入了该URL-http://219.41.192.244:8080/KanaApp,它将被重定向到http://219.41.192.244:8080/KanaApp/#/home,并且无需登录即可将用户带到主页。如何防止这种情况并使登录页面成为必填项?
无论用户何时输入此网址http://219.41.192.244:8080/KanaApp,我都想重定向到http://219.41.192.244:8080/KanaApp/login网址,有人可以在这里为我提供帮助。
Spring启动应用程序: 我在这里设置了上下文路径 server.contextPath = / KanaApp
和前端角度
SecurityConfig class:
.antMatchers("/static/**").permitAll()
.antMatchers("/assets/**").permitAll()
.antMatchers("/css/**").permitAll()
.antMatchers("/forgotPassword").permitAll()
.antMatchers("/setForgotPassword").permitAll()
.and()
.formLogin()
.successHandler(handler)
.usernameParameter("username")
.passwordParameter("password")
.loginPage("/login").permitAll()
.and()
.logout()
.logoutSuccessUrl("/login?logout")
.invalidateHttpSession(true).permitAll()
.and()
.csrf().disable();
答案 0 :(得分:0)
我认为您缺少的是正确的安全配置。 如果要连接用户,则必须强制用户连接。这意味着您必须只允许对经过身份验证的用户的请求。 您将找到有关如何进行spring example here的大量指南。
您必须做的是注册一个扩展WebSecurityConfigurerAdapter
的类,并定义应用程序的哪一部分受保护。
例如:
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
每个人都可以使用/ public / ...中的所有uri,因此您无需登录即可进入那里,而其他任何人也都需要登录才能进入那里。
当您拥有登录页面时,强制用户进入该页面的基本方法是实现spring表单登录(在前面的链接中有更详细的说明)。这是工作的一部分
.formLogin()
.loginPage("/login")
.permitAll()
声明Spring安全表单登录,所有必须通过身份验证的请求将重定向到此处指定的页面。当然,您可以根据需要自定义此页面(an example from spring documentation)。