JHipster单体应用登录

       JHipster单体应用的登录处理,集成了spring security。之前对 spring security不太了解,这次遇到一些问题,把自己的一些了解记录一下。

        整体上单体不使用oauth的认证相对简单不少,在SecurityConfiguration中做下配置:

.and()

.rememberMe()

.rememberMeServices(rememberMeServices)

.rememberMeParameter("remember-me")

.key(jHipsterProperties.getSecurity().getRememberMe().getKey())

.and()

.formLogin()

.loginProcessingUrl("/api/authentication")

.successHandler(ajaxAuthenticationSuccessHandler)

.failureHandler(ajaxAuthenticationFailureHandler)

.usernameParameter("j_username")

.passwordParameter("j_password")

.permitAll()

        浏览器访问url会经过 AbstractAuthenticationProcessingFilter 其中会对url进行匹配处理(根据loginProcessingUrl值【猜测】),所以登录页面的提交url是“api/authentication”(其中 用户名、密码 parameter名是"j_username"和"j_password") 如果匹配到是进行认证的url请求,会调用 UsernamePasswordAuthenticationFilter(AbstractAuthenticationProcessingFilter的子类) 的 attemptAuthentication方法,如果用户名/密码正确,会将用户信息放在SecurityContextHolder.getContext()(默认使用ThreadLocal实现), 如果 使用了 rememberMe 特性,后续的每次请求 会在 RememberMeAuthenticationFilter中 获取 SecurityContextHolder.getContext(),获取到用户信息 就转到后面的正常处理。

你可能感兴趣的:(JHipster单体应用登录)