<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
有時候頁面跳轉並不能滿足我們,特別是在前後端分離開發中就不需要成功之後跳轉頁面。只需要給前端返回一個JSON通知登入成功還是失敗與否。這個試試可以通過自定義AuthenticationSuccessHandler實現
修改WebSecurityConfigurer
successHandler
package com.example.config; import com.example.handler.MyAuthenticationSuccessHandler; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { //【注意事項】放行資源要放在前面,認證的放在後面 http.authorizeRequests() .mvcMatchers("/index").permitAll() //代表放行index的所有請求 .mvcMatchers("/loginHtml").permitAll() //放行loginHtml請求 .anyRequest().authenticated()//代表其他請求需要認證 .and() .formLogin()//表示其他需要認證的請求通過表單認證 //loginPage 一旦你自定義了這個登入頁面,那你必須要明確告訴SpringSecurity日後哪個url處理你的登入請求 .loginPage("/loginHtml")//用來指定自定義登入介面,不使用SpringSecurity預設登入介面 注意:一旦自定義登入頁面,必須指定登入url //loginProcessingUrl 這個doLogin請求本身是沒有的,因為我們只需要明確告訴SpringSecurity,日後只要前端發起的是一個doLogin這樣的請求, //那SpringSecurity應該把你username和password給捕獲到 .loginProcessingUrl("/doLogin")//指定處理登入的請求url .usernameParameter("uname") //指定登入介面使用者名稱文字方塊的name值,如果沒有指定,預設屬性名必須為username .passwordParameter("passwd")//指定登入介面密碼密碼框的name值,如果沒有指定,預設屬性名必須為password // .successForwardUrl("/index")//認證成功 forward 跳轉路徑,forward代表伺服器內部的跳轉之後,位址列不變 始終在認證成功之後跳轉到指定請求 // .defaultSuccessUrl("/index")//認證成功 之後跳轉,重定向 redirect 跳轉後,地址會發生改變 根據上一儲存請求進行成功跳轉 .successHandler(new MyAuthenticationSuccessHandler()) //認證成功時處理 前後端分離解決方案 .and() .csrf().disable(); //禁止csrf 跨站請求保護 } }
新增處理成功handler
package com.example.handler; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * 自定義認證成功之後處理 */ public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { Map<String,Object> result = new HashMap<>(); result.put("msg","登入成功"); result.put("status",200); result.put("authentication",authentication); response.setContentType("application/json;charset=UTF-8"); String s = new ObjectMapper().writeValueAsString(result); response.getWriter().println(s); } }
啟動成功,測試
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45