我使用的是Spring Security 4.0.2。用Spring4.2.0释放。释放。
我无法创建注销链接(我知道href属性的值必须是多少)。
考虑:
使用WebApplicationInitializer在Java中配置DelegatingFilterProxy:
public class SecurityWebInitializer
extends AbstractSecurityWebApplicationInitializer {
}
为Spring MVC启用web安全的简单配置类
@Configuration
@EnableWebSecurity
public class SecurityConfig
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().and()
.authorizeRequests()
.antMatchers("/spitter/").authenticated()
.antMatchers(HttpMethod.GET, "/spitter/register").authenticated().and()
.logout().deleteCookies("remove")
.invalidateHttpSession(true).logoutUrl("/logout")
.logoutSuccessUrl("/");
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password")
.roles("USER").and().withUser("admin").password("password")
.roles("USER", "ADMIN");
}
}
控制器:
@Controller
@RequestMapping(value = "/spitter")
public class SpittrController {
private SpittleRepository spittleRepository;
@Autowired
public SpittrController(SpittleRepository spittleRepository) {
this.spittleRepository = spittleRepository;
}
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistrationForm() {
return "registerForm";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String processingRegistration(@Valid Spitter spitter, Errors errors) {
if (errors.hasErrors()) {
return "registerForm";
}
spittleRepository.save(spitter);
return "redirect:/spitter/" + spitter.getUserName();
}
@RequestMapping(value = "/{username}", method = RequestMethod.GET)
public String showSpitterProfile(@PathVariable("username") String username,
Model model) {
Spitter spitter = spittleRepository.findByUsername(username);
if(spitter != null){
model.addAttribute(spitter);
}
return "profile";
}
}
登记orm.jsp:
<form method="post">
<table>
<tr>
<td>First Name:</td>
<td><input type="text" name="firstName" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" name="lastName" /></td>
</tr>
<tr>
<td>User Name:</td>
<td><input type="text" name="userName" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" value="Register" /></td>
</tr>
</table>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">
</form>
提交注册表后。jsp,概要文件。jsp显示给用户:
profile.jsp:
<body>
<h1>Hello world!</h1>
<p>The time on the server is ${serverTime}.</p>
<h1>Your Profile</h1>
<h1><a href="/logout">Logout</a></h1>
<table>
<tr>
<td>First Name:</td>
<td><c:out value="${spitter.firstName}" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><c:out value="${spitter.lastName}" /></td>
</tr>
<tr>
<td>User Name:</td>
<td><c:out value="${spitter.userName}" /></td>
</tr>
</table>
</body>
当我击中
http://localhost:8080/web/spitter/register
我被重定向到登录页面。登录并提交表单后,配置文件。显示了jsp,其中包含了一个注销链接。单击该按钮,就会出现HTTP 404。
我已经看过Spring安全文档,但他们已经考虑到了百里叶。My是一个简单的JSP页面。
此外,我也考虑过这一点,
默认情况下,注销url需要POST请求。要对GET请求执行注销,您需要:
http。注销()。logoutRequestMatcher(新的AntPathRequestMatcher(“/注销”));
1: http://docs.spring.io/spring-security/site/docs/3.2.x/guides/hellomvc.html
有什么建议吗?
更新配置文件中的您的代码。jsp组件
<h1><a href="#" onclick="javascript:logoutForm.submit();">logout</a></h1>
<c:url var="logoutUrl" value="/logout" />
<form action="${logoutUrl}" method="post" id="logoutForm">
<input type="hidden" name="${_csrf.parameterName}"
value="${_csrf.token}" />
</form>
我正在学习springsecurity(基于java的配置),我无法使注销正常工作。当我点击注销时,我看到URL更改为http://localhost:8080/logout并获取“HTTP 404-/logout”。登录功能工作正常(即使使用自定义登录表单),但问题是注销,我怀疑重定向的url“localhost:8080/logout”应该类似于“localhost:8808/springte
本文向大家介绍linux网络配置工具的使用,包括了linux网络配置工具的使用的使用技巧和注意事项,需要的朋友参考一下 本文介绍了RHEL8网络服务和网络配置工具,以及网络防火墙和规则管理工具。 NetworkManager网络管理工具 NetworkManager提供了RHEL8的网络服务,每一个网络设备都关联一个NetworkManager device,对网络设备的配置保存在NetworkM
问题内容: 我对Spring Boot配置有问题。 我已经使用https://start.spring.io/创建了基本的Spring Boot项目 我有一个问题,配置仅适用于子目录中的类: 我尝试了批注@ComponentScan,但没有帮助。 您知道我该怎么办吗? 问题答案: 在spring启动文档@SpringBootApplication状态 许多spring引导开发者总是有其主类注解为和
我对Spring Boot配置有问题。 我已经使用https://start.spring.io/ 我有一个问题,配置只适用于子曲库中的类: 我尝试了annotation@ComponentScan,但没有任何帮助。 你知道我能用这个做什么吗?
或 因为bean注入将注入A的实现,在spring配置中是B。我不想指定泛型类型,因为这会稍微违背使用泛型的目的。