我自己的login页面
我自己的LoginController文件
@Controller
public class LoginController {
// @RequestMapping单个路径用@RequestMapping(""),多个路径用@RequestMapping({"a","b"})
@RequestMapping({"/login","login","/login.html","/user/login"})//
public String login(){
return "login";
}
}
原本的情况下应该是跳转到自己的登录页面的,但为了测试security自带的页面出现了一些问题
SpringSecurity自带的默认页面功能
http.formLogin()
即可开启默认登录页面,并且我发现优先度高于我在Controller里的自己的login。
但是加了.loginPage("/login")//用户未登录时,访问任何资源都转跳到该路径,即登录页面
这一行后发现自己的login页面优先度更高了,特此记录一下。
@Override
protected void configure(HttpSecurity http) throws Exception {//授权
//通过路径设置授权限制访问
http.authorizeHttpRequests()
.antMatchers("/").permitAll()//对于默认/来说允许所有人访问
.antMatchers("/index").hasRole("users")//只允许用户可以登录index页面
.and()
//没有权限会自动跳转到默认登录界面
.formLogin()
// .loginPage("/login")//用户未登录时,访问任何资源都转跳到该路径,即登录页面
// .loginProcessingUrl("/login")//登录表单form中action的地址,也就是处理认证请求的路径
// .usernameParameter("name")///登录表单form中用户名输入框input的name名,不修改的话默认是username
// .passwordParameter("password")//form中密码输入框input的name名,不修改的话默认是password
// .defaultSuccessUrl("/index")//登录认证成功后默认转跳的路径
.and()
.logout().logoutSuccessUrl("/")//开启注销功能,注销成功返回注册页面
.and()
;
解决方案
为了解决security的登录成功后跳转到自己写的login里,可以.defaultSuccessUrl(“/index”),使他成功后直接跳到指定页面。
@Override
protected void configure(HttpSecurity http) throws Exception {//授权
//通过路径设置授权限制访问
http.authorizeHttpRequests()
.antMatchers("/").permitAll()//对于默认/来说允许所有人访问
.antMatchers("/index").hasRole("users")//只允许用户可以登录index页面
.and()
//没有权限会自动跳转到默认登录界面
.formLogin()
.defaultSuccessUrl("/index")//登录认证成功后默认转跳的路径,这一行如果不加,会继续跳转到自己的login页面
.and()
.logout().logoutSuccessUrl("/")//开启注销功能,注销成功返回注册页面
.and()
;
//防止网站攻击 get不太安全 post较安全
http.csrf().disable();//关闭csrfCSRF(Cross-site request forgery)
// 也被称为:one click attack/session riding,中文名称:跨站请求伪造,缩写为:CSRF/XSRF。
//开启记住我功能,本质就是个cookie
http.rememberMe();
}