一、使用formLogin模式进行鉴权
在configure(HttpSecurity http)方法里写入如下代码
http.csrf().disable() .formLogin() .loginPage("/login.html")//设置登录页,该页面放在public目录下 .loginProcessingUrl("/login")//设置登录请求地址,默认就是login .defaultSuccessUrl("/index")//设置登录成功后跳转地址 .usernameParameter("uname")//配置用户名参数,默认是username .passwordParameter("pword")//配置密码参数,默认是password .and() .authorizeRequests() .antMatchers("/login.html","/login").permitAll()//配置无需认证即可访问的请求 .antMatchers("/biz1","/biz2").hasAnyAuthority("ROLE_user","ROLE_admin")//配置需要权限才能访问的请求 .antMatchers("/syslog","/sysuser").hasAnyAuthority("ROLE_admin") .anyRequest().authenticated();//配置其他的所有请求需要认证
然后重写另外两个configure方法
@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { //从内存里获取用户数据 auth.inMemoryAuthentication() //配置用户信息 .withUser("user").authorities("ROLE_user").password(new BCryptPasswordEncoder().encode("1")) .and() //配置管理员信息 .withUser("admin").authorities("ROLE_user","ROLE_admin").password(new BCryptPasswordEncoder().encode("1")) .and() //密码均采用BCrypt加密方式 .passwordEncoder(new BCryptPasswordEncoder()); } @Override public void configure(WebSecurity web) throws Exception { //放行所有静态资源 web.ignoring() .antMatchers("/css/**","/font/**","/js/**","/img/**"); }
自定义表单代码:
<form action="/login" method="post"> <span>用户名称</span><input type="text" name="uname" id="username"/> <br> <span>用户密码</span><input type="password" name="pword" id="password"/> <br> <span>验证码</span><input type="text" name="captchaCode" id="captchaCode"/> <input type="submit" value="登陆"> <label><input type="checkbox" name="remember-me" id="remember-me"/>记住密码</label> </form>
记住我功能在configure(HttpSecurity http)方法里加入:
//开启记住我功能,默认参数是remember-me http.rememberMe();
勾选记住我登录成功后,就会有一个remember-me的cookie