如果我想指定我自己的登錄頁面
.formLogin()
.loginPage("/login")
我不清楚我需要發布到哪里。我也發帖/login嗎?Spring 是否提供了一個接受帖子的同名端點?有哪些回應?我找不到任何可以告訴我期望得到什么回應的檔案。無論我輸入什么用戶,我都會得到 200。
我有一個實作 UserDetailsS??ervice 的類,我在我的配置中參考它們
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
但該loadUserByUsername服務的方法沒有被呼叫。
如果我想通過指定自己處理登錄
.loginProcessingUrl("/api/login")
該端點的預期是什么?
更新
我的登錄表單是由 React 實作的。我從別處得到它,所以它正在做的錯誤處理可能與這個用例無關。我試圖了解我應該期望的回傳代碼。代碼看起來像這樣
const payload = {
"email": state.email,
"password": state.password,
}
axios.post( '/login', payload)
.then(function (response) {
console.log('response.status', response.status);
if (response.status === 200) {
redirectToHome();
props.showError(null)
} else if (response.data.code === 204) {
props.showError("Username and password do not match");
} else {
props.showError("Username does not exists");
}
})
.catch(function (error) {
console.log(error);
});
更新2
我有.failureURL("/login?error"),.accessDeninedPage("/login?denied)
當 Spring 嘗試重定向到時,/login?denied我看到了這個
"FORWARD" dispatch for POST "/login?denied", parameters={denied:[]}
Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
Exiting from "FORWARD" dispatch, status 405
GET "/login", parameters={}
為什么 Spring 無法發布到頁面。然后它重定向到GET "/login". 我的期望是它會做一個GET /login?denied. 換句話說,使用錯誤指示重定向到我的表單。但它正在執行 POST,這不起作用
uj5u.com熱心網友回復:
通過做
formLogin().loginPage("/login")
它將使用 url 配置一個 POST 端點以/login進行身份驗證。用于身份驗證的用戶憑據應包含分別使用請求引數名稱username和密碼的用戶名和密碼password。它們可以放在查詢字串或發布的表單資料中。
如果身份驗證失敗,它將重定向到/login?error.
如果身份驗證成功,它將重定向到您在登錄前嘗試訪問的 url。或者重定向到/該頁面是否為登錄表單。
所有這些行為都在 的 javadoc 中提到loingPage(),并SavedRequestAwareAuthenticationSuccessHandler用于成功驗證后的重定向行為。
如果我想通過指定自己處理登錄
.loginProcessingUrl("/api/login")該端點的預期是什么?
它只會將驗證用戶憑據的 POST 端點的 url 更改為/api/login. 所以你的登錄表單應該 POST 到它來驗證憑據。所有其他行為保持不變。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317098.html
