весенняя безопасность всегда возвращает anonymousUser - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть реализация безопасности Spring для существующего приложения, основанного на Spring, он всегда возвращает анонимного пользователя независимо от того, что я предоставляю на странице входа.

@Configuration
@EnableWebSecurity
@EnableGlobalAuthentication
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {



    @Autowired
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("bill").password("abc123").roles("ROLE_USER");
        auth.inMemoryAuthentication().withUser("admin").password("root123").roles("ADMIN");
        auth.inMemoryAuthentication().withUser("dba").password("root123").roles("ADMIN","DBA");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        System.out.println("configure called");
         http.authorizeRequests()
            .antMatchers("/*").access("hasRole('ROLE_USER')")
            //.antMatchers("/*").access("IS_AUTHENTICATED")
            .and().formLogin().loginPage("/login")
            .usernameParameter("user").passwordParameter("passWord")
            .and().csrf()
            .and().exceptionHandling().accessDeniedPage("/Access_Denied");
    }

}

форма из login.jsp:

<form action="/Patching/Authen" name="form1" method="POST" onsubmit="return validateForm();"><br><br>
                    <h1>User Login</h1>
                    <table>
                        <tr>
                            <th>Username</th>
                            <td><input type="text" name="username" id="user" required/></td>
                        </tr>
                        <tr>
                            <th>Password</th>
                            <td><input type="password" name="password" required/></td>
                        </tr>
                    </table><br><input type="hidden" name="${_csrf.parameterName}"  value="${_csrf.token}" />
                    <input type="submit"><br><br><br>
                </form>

Пока я делаю на своем посту контроллера форму отправки:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

возвращается анонимная аутентификация.

PS У меня уже есть login.jsp, где у меня есть настроенный пользователь ипараметр пароля.Помощь оценена.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Я попробовал все, что вы предлагаете выше ... для меня сработало изменение действия формы в файле login.jsp на «login» и изменение конфигурации на

 http.authorizeRequests()
        .antMatchers("/", "/home").access("hasRole('USER')")
        .antMatchers("/resources/**").permitAll()
        //.antMatchers("/*").access("IS_AUTHENTICATED")
        .anyRequest().authenticated()
        .and().csrf().disable().formLogin().loginPage("/login").permitAll()
        //.loginProcessingUrl("/Authen")
        .usernameParameter("user").passwordParameter("passWord")
        .defaultSuccessUrl("/Authen")
        .failureUrl("/failedLogin")
        .and().exceptionHandling().accessDeniedPage("/Access_Denied");

, далее мне нужно поработать надпоток существующей реализации вместе с пружинной безопасностью.

0 голосов
/ 26 декабря 2018

В вашем конфиге не упоминается ни один аутентифицированный шаблон URI.Вам нужно добавить
anyRequest (). Authenticated ()

...