Как разделить контент для незарегистрированных и зарегистрированных пользователей - PullRequest
0 голосов
/ 27 ноября 2018

Проблема:

На сайте есть один контент для людей, которые еще не зарегистрировались, и другой для тех, кто уже зарегистрировался и вошел в систему. Когда я захожу на сайт, меня бросают на страницу / login , как я указал в Spring Security, и эта страница не позволяет мне никуда идти, пока я не войду в систему. Но мне нужно перебросить меня при входе на сайт на главную страницу для незарегистрированных пользователей, где яможет просматривать информацию о событии и т. д., а затем зарегистрироваться или войти в систему. Я почти решил, что добавил в класс безопасности Spring .loginPage ("/ index") вместо ("/ login ") + добавил antMatchers, где он указал все страницы, которые может посетить незарегистрированный пользователь.Но была проблема.Это показано на картинке.Мои стили не работают, он также перестает показывать картинки. enter image description here enter image description here

Я добавляю в antMatchers "/ resources / **" но это не помогает.Кроме того, когда я перехожу на вкладку «вход» с главной страницы и пытаюсь войти, введя свой логин и пароль, пишите ошибку

«Метод запроса« POST »не поддерживаетсяorg.springframework.web.HttpRequestMethodNotSupportedException: метод запроса «POST» не поддерживается в «

My Seing Secutiry code перед обновлением -

   @Configuration
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

        @Qualifier("userDetailsServiceImpl")
        @Autowired
        private UserDetailsService userDetailsService;

        @Autowired
        private SimpleAuthenticationSuccessHandler successHandler;

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth
                    .userDetailsService(userDetailsService);
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/admin/**").hasAnyRole("ADMIN")
                    .antMatchers("/runner/**").hasAnyRole("RUNNER","ADMIN")
                    .antMatchers("/coordinator/**").hasAnyRole("COORDINATOR","ADMIN")
                      .anyRequest().authenticated().and()
                    .formLogin()
                      .loginPage("/login")
                      .successHandler(successHandler)
                      .permitAll().and()
                    .logout()
                      .permitAll();
        }

        @Override
        public void configure(WebSecurity web) throws Exception {
            web
                    .ignoring()
                    .antMatchers( "/static/**", "/css/**", "/js/**","/error");
        }
    }

Код My Sping Secutiry после обновления - все остальное

       @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/admin/**").hasAnyRole("ADMIN")
                .antMatchers("/runner/**").hasAnyRole("RUNNER","ADMIN")
                .antMatchers("/coordinator/**").hasAnyRole("COORDINATOR","ADMIN")
                  .antMatchers( "/aboutEvent","/marathonCompare","/charityOrgList",
                          "/calculatorBMI","/calculatorBMR","/learnMore","/registerAsRunner","/becomeSponsor","/",
                          "/allResults","/interactiveMap","/becomeRunner","/login","/resources/**").permitAll()
                  .anyRequest().authenticated().and()
                .formLogin()
                  .loginPage("/index")
                  .successHandler(successHandler)
                  .permitAll().and()
                .logout()
                  .permitAll();
    }

Контроллер входа

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login(){

        return "login/login";
    }
}

Страница входа

 <!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
          integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
          crossorigin="anonymous" th:href="@{/webjars/bootstrap/4.1.3/css/bootstrap.min.css}">

    <link rel="stylesheet" type="text/css" media="all" th:href="@{/css/runnerstyle/register.css}"/>
</head>
<body class="align">

<div class="register-top flex-container">
    <form th:action="@{/index}">
        <button type="submit" class="register-back">Назад</button>
    </form>
    <h1><b>MARATHON SKILLS 2018</b></h1>
</div>

<div class="login-middle">
    <div class="login-text">
        <h2>Форма авторизации<br/></h2>
        <h4>Пожалуйста, авторизуйтесь в системе, используя ваш адресс электронной почты<br>
        и пароль.
        </h4>
    </div>

    <div th:if="${param.error}" class="alert alert-danger">
        <p>Invalid username or password</p>
    </div>

    <div th:if="${param.logout}" class="alert alert-success">
        <p>You've been logged out</p>
    </div>

    <form th:action="@{/login}" method="post" class="form-input">
        <table>
            <tr th:class="${param.error} ? 'form-group has-error' : 'form-group'">
                <th><h4>Email:</h4></th>
                <th style="padding-left: 20px">
                    <input type="email" id="username" name="username" placeholder="Enter your email address" size="60px" class="input-field">
                </th>
            </tr>
            <tr th:class="${param.error} ? 'form-group has-error' : 'form-group'">
                <th><h4>Password:</h4></th>
                <th style="padding-left: 20px">
                    <input type="password" id="password" name="password" placeholder="Enter your email password" size="60px" class="input-field">
                </th>
            </tr>
            <tr>
                <th></th>
                <th style="padding-right: 13vw;">
                    <button type="submit" class="login-button">Login</button>
                    <a href="#" th:href="@{'/'}" class="href">Cancel</a>
                </th>
            </tr>
        </table>
    </form>
</div>

<div class="register-bot">
    18 дней 8 часов и 17 минут осталось до старта марофона!
</div>


</body>
</html>

Контроллер индекса

@Controller
public class IndexController {

    @GetMapping({"/","/index",""})
    public String getIndexPage(){
        return "index";
    }

    @GetMapping("/registerAsRunner")
    public String registerRunner(){
        return "runner/createOrRegister";
    }

    @GetMapping("/learnMore")
    public String getLearnMorePage(){return "learnmore/main";}
}

Как мне решить эту проблему и сделать то, что я имею в виду?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...