快速開始,本個項目用到了theamleaf模板引擎,需要引入跟theamleaf有關的2個包,spring-boot-starter-thymeleaf,thymeleaf-extras-springsecurity4,在引入security和web的star ter包開始正文,創建配置類,開始自定義配置:
1、super.configure(http);//定製請求的授權規則http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("VIP1").antMatchers("/level2/**").hasRole("VIP2").antMatchers("/level3/**").hasRole("VIP3");2、//開啟自動配置的登陸功能,效果,如果沒有登陸,沒有許可權就會來到登陸頁面http.formLogin().usernameParameter("user").passwordParameter("pwd").loginPage("/userlogin");//1、/login來到登陸頁//2、重定向到/login?error表示登陸失敗//3、更多詳細規定//4、默認post形式的 /login代表處理登陸//5、一但定製loginPage;那麼 loginPage的post請求就是登陸3、//開啟自動配置的註銷功能。http.logout().logoutSuccessUrl("/");//1、訪問 /logout 表示用戶註銷,清空session//2、註銷成功會返回 /login?logout 頁面;4、//開啟記住我功能http.rememberMe().rememberMeParameter("wcn");//登陸成功以後,將cookie發給瀏覽器保存,以後訪問頁面帶上這個cookie,只要通過檢查就可以免登錄//點擊註銷會刪除cookie
重寫的第二個方法為增加可驗證的用戶,實際操作是從資料庫獲得,這裡暫時放在內存,方便演示。
彩蛋::因為Security5.0的密碼驗證的問題,需要給密碼進行加密,否則會報錯,我就重寫了一個簡單的繼承於passwordEncoder的MypasswordEncoder,返回原來的字元串.
isAuthenticated()表示是否登錄驗證過sec:authentication="name"登錄名sec:authentication="principal.authorities"所包含的角色許可權sec:authorize="hasRole("VIP1")"是否有VIP1的許可權