我目前正在编写一个简单的网站,该网站可供登录用户和未登录用户查看。如何通过导航栏而不是页面创建登录
我能够使用spring/spring-security创建一个简单的登录页面,但我宁愿允许通过导航栏登录(如在facebook上)。春季安全可能吗?看来,spring-security只允许登录页面登录,而不是从html页面内的html块中登录。
编辑:我正在考虑使用成功处理程序,并在登录完成后更新页面而不是重定向。
我目前正在编写一个简单的网站,该网站可供登录用户和未登录用户查看。如何通过导航栏而不是页面创建登录
我能够使用spring/spring-security创建一个简单的登录页面,但我宁愿允许通过导航栏登录(如在facebook上)。春季安全可能吗?看来,spring-security只允许登录页面登录,而不是从html页面内的html块中登录。
编辑:我正在考虑使用成功处理程序,并在登录完成后更新页面而不是重定向。
是的,这是可能的,但如果你想自动重新加载页面,你必须使用AJAX。 如果你使用Spring的Java配置,你可以将其配置如下:
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.csrf()
.csrfTokenRepository(this.csrfTokenRepository())
.and()
.authorizeRequests()
/* The configuration of which requests to intercept. */
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/login")
.failureUrl("/login/failed")
.defaultSuccessUrl("/o")
.usernameParameter("username")
.passwordParameter("password")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login/out")
.permitAll();
}
/**
* Creates a {@link CsrfTokenRepository} that sets the token name to
* _csrf
.
*
* @return The {@link CsrfTokenRepository}.
*/
private CsrfTokenRepository csrfTokenRepository() {
val csrfTokenRepository = new HttpSessionCsrfTokenRepository();
csrfTokenRepository.setSessionAttributeName("_csrf");
return csrfTokenRepository;
}
}
上面的配置执行以下操作:
_csrf
参数CSRF令牌。 (更多关于CSRF:。https://en.wikipedia.org/wiki/Cross-site_request_forgery/login
登录页面/login
这是你必须POST请求发送到的用户名,密码的URL,以及CSRF标记设置。/login/failed
,这是一个用户被重定向他进入登录页面上错误的凭据时的页面。username
和password
。这些是您必须在发送给POST请求的POST请求中与您的CSRF令牌一起设置的参数登录处理URL。这主要是你要在服务器端做的一切。在客户端,您必须配置一个表单,将操作设置为登录处理URL,将方法设置为POST以及名称为_csrf
的隐藏字段,其中包含CSRF标记,或者您必须发送类似的AJAX请求。
问候,费边
我已经做到了这之前,所以这里是如何使用它的工作示例:https://github.com/lcmanager/gdb
并通过JavaScript登录(使用AngularJS):https://github.com/lcmanager/gdb/blob/master/gdb-web-control/src/main/resources/static/js/modules/login.js
你怎么知道Facebook使用弹簧安全? –
我不知道。我只是举了一个我想要实现的例子。 – ADOGCATFISH3333
你的问题不是很清楚你想做什么。你绝对可以使用navber来放置你的登录表单。它与弹簧安全无关 – LynAs