2012-05-31 60 views
1

我是新來的春天和web開發。我想實現用戶密碼更改funcionality。到目前爲止,我只用這種方式路徑:彈簧安全:密碼更改頁面執行

@RequestMapping(value = "/timetable/{year}/{month}/{date}", method = RequestMethod.GET) 
public String timetableDateJump(@PathVariable("year") int year, @PathVariable("month") int month..) 

但我不希望用戶的傳遞只在url中傳遞。它如何在Web服務中完成?什麼是正常的,爲什麼要實現呢?

順便說一句:我應該從用戶tpo服務器傳遞密碼並將其散列在服務器端,對吧?

+0

你看過http://stackoverflow.com/questions/3335559/spring-security-custom-filter-change-password –

+0

是的,我有 - 事實上它處理如何強制重定向到用戶頁面的變化,而不是如何實施它 –

+0

你還在尋找什麼?接受的答案有一個映射到HTTP POST的方法簽名。您只需填寫如何更改密碼,這將取決於您的用戶標識和密碼所在的數據存儲區。 –

回答

0

從我的觀點沒有彈簧安全的具體細節在這裏:

1)鑑於

<form:form method="post" action="/password/change" modelAttribute="changePasswordForm"> 
    <form:label path="password"> 
     New password: 
    </form:label> 
    <form:password path="password" /> 
    <input type="submit" value="Change password" /> 
</form:form> 

2創建形式)從形式結合用戶的價值觀,以java對象創建類

public class ChangePasswordForm { 
    private String password; 

    public void setPassword(String password) 
     this.password = password; 
    } 

    public String getPassword() { 
     return password; 
    } 
} 

3)創建控制器

@Controller 
public ChangePasswordController { 

    @RequestMapping(value = "/password/change", method = RequestMethod.POST) 
    public String changePassword(ChangePasswordForm form) { 
     // change user password 
     return "return:/user/info"; 
    } 
} 

我沒有測試這個代碼,但它應該以這種方式工作。

如何更新數據庫中的密碼,它取決於您的應用程序和使用過的庫。