Java 限制用户直接访问URL-spring安全

Java 限制用户直接访问URL-spring安全,java,spring-mvc,authentication,spring-security,Java,Spring Mvc,Authentication,Spring Security,我正在尝试实现spring安全性,没有错误/异常,但它不起作用,我无法重定向到成功页面。 我的成功页面是/successpage,/Verify将根据数据库验证用户详细信息。 我想用3个不同的参数验证用户 SecurityConfig.java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Resource(name="

我正在尝试实现spring安全性,没有错误/异常,但它不起作用,我无法重定向到成功页面。 我的成功页面是/successpage/Verify将根据数据库验证用户详细信息。 我想用3个不同的参数验证用户

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Resource(name="AdminDB")
    private DataSource datasource; 
    
    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(new Md5PasswordEncoder());
        auth.eraseCredentials(false);
    }
    
    @Override
    protected void configure(HttpSecurity security) throws Exception {
        logger.info("Inside SecurityConfig - configure() - Spring security");
        security
                .authorizeRequests()
                    .antMatchers("/resources/**", "/unsecured/**", "/","/Verify").permitAll()
                    .anyRequest().authenticated()
                .and().formLogin()
                    .loginPage("/").permitAll()
                    .usernameParameter("email")
                    //.passwordParameter("password")
                    .defaultSuccessUrl("/sucessPage/")
                    .successHandler(successhandler())
                    .failureUrl("/")
                .and().logout()
                    .invalidateHttpSession(true).deleteCookies("JSESSIONID")
                    .permitAll()
                .and().exceptionHandling().accessDeniedPage("/systemError.html")
                .and().csrf().disable();
    }
    
    @Bean
    public CustomAuthenticationSuccessHandler successhandler() {
        return new CustomAuthenticationSuccessHandler();
    }

}
登录页面-HTML:

<form id="form" name="Form" action="#" th:action="@{/verify}" th:object="${Form}" method="post">
                
                    <div class="50">
                        <label for="first-name" class="label-first-name">First Name*</label>
                        <input type="text" id="firstName" name="first-name" placeholder="Enter First Name" th:field="*{firstName}">
                    </div>
                    <div class="50">
                        <label for="last-name" class="label-last-name">Last Name*</label>
                        <input type="text" id="lastName" name="last-name" placeholder="Enter Last Name" th:field="*{lastName}">
                    </div>
                </div>
                <div class="100">
                    <label for="email-1" class="label-email-address">Email Address*<span class="label-note">This is your login username</span></label>
                    <input type="text" id="email" name="email" placeholder="Enter Email" th:field="*{email}">
                </div>
                <div class="100">
                    <label for="email-2" class="label-email-address">Verify Email Address*</label>
                    <input type="text" id="verifyEmail" name="verifyEmail" placeholder="Re-enter Email" th:field="*{verifyEmail}">
                </div>
                <div class="100">
                    <label for="phone" class="label-phone-number">Phone Number<span class="label-note">(optional)</span></label>
                    <input type="text" id="phoneNumber" name="phoneNumber" placeholder="Enter Phone Number" th:field="*{phoneNumber}">
                </div>
                <input type="submit" id="submitBtn" value="Next">
            </form>

loadUserByUsername只接受1个参数。我想通过firstName、lastName、针对db的电子邮件以及使用spring security重定向到成功的方式来验证用户。谢谢

我认为您的SecurityConfig.java不完整

.formLogin()缺少.loginPage(“/”):

.loginProcessingUrl("/j_spring_security_check")


.and().formLogin().loginPage(“/”).permitAll().loginProcessingUrl(“/verify”).usernameParameter(“电子邮件”)/.passwordParameter(“密码”).defaultSuccessUrl(“/successPage/”)已编辑但没有Luckhaha您可以随意对我的答案进行否决,但您的安全配置中仍然缺少这两个元素,现在,如果它仍然不起作用,那就意味着你还有其他问题,但是如果你不提供你的整个配置,就无法猜测问题出在哪里。如果你提供了完整的,你错过了很多很多东西,我只是建议你遵循在线教程,比如Baeldung的教程,它们是完整的,解释得很好。干杯,继续投票支持帮助的人!我更新了问题,你现在可以检查了。这两个要素不是强制性的。我也在尝试,如果找到了解决方案,我会发布。
.loginProcessingUrl("/j_spring_security_check")
.defaultSuccessUrl("/sucessPage")