问题是:
该网站为尚未注册的人提供一种内容,为已经注册并登录的人提供另一种内容。当我进入该网站时,我被抛到 / login 页面上已在Spring Security中指示,并且该页面不允许我登录之前进入任何地方。但是我需要把我扔到未注册用户的主页入口处,以便我可以查看有关事件的信息,等等。 ,然后注册或登录。我几乎决定,我添加了Spring Security类 .loginPage(“ / index”)而不是(“ / login”) +添加了antMatchers,他在其中指示了未注册用户可以访问的所有页面。但有一个问题。如图所示。我的样式无效,它也停止显示图片。
我添加到antMatchers “ / resources / **” ,但这无济于事。另外,当我从主页转到“登录”选项卡,并尝试通过输入登录名和密码登录时,输入错误
“不支持请求方法“ POST” org.springframework.web.HttpRequestMethodNotSupportedException: “
”不支持请求方法“ POST”
我的Sping安全代码在更新之前-
@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");
}
}
我的Sping安全代码在更新后-其余相同
@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";}
}
我该如何解决此问题并做我想做的事情?谢谢!