Ben kullanıcı login olduktan sonra bir sayfasını oluşturduğunda basit @Controller
sınıf var:Spring MVC, ModelAttribute'a veri bağlamayı nasıl yasaklar?
@Controller
@SessionAttributes("user")
public class DashBoardController {
@RequestMapping(value="/user/dashBoard", method=RequestMethod.GET)
public String showDashBoardPage(@ModelAttribute("user") User user, Model model) {
//do some work here....
return "dashBoard";
}
}
Gördüğünüz gibi, user
nitelik hala oturumda ve sadece oradan çıkarmak istiyorum @ModelAttribute
ek açıklama kullanarak mevcut olduğu, başka hiçbir şey. Ancak, istekte bulunmak için herhangi bir parametre eklerseniz, yay bu parametreyi varolan kullanıcı nesnesine bağlamaya çalışır, bu benim istediğim şey değil, bu davranışı nasıl yasaklar?
public class User {
private String name;
private String password;
private Language language;
//public getters and setters here...
}
benim dashBoard
sayfasının dilini değiştirmek isterseniz, ben ?language=en
parametrenin eklenmesiyle ve bu durumda ilkbaharda bu sayfayı istemek dilini değiştirmek için çalışır:
User
alanlarından hiçbiriyle uyuşmayan bir şeye değiştirerek yürüyebilirim, ancak bu kırılgan bir çözüm gibi görünüyor. Bu veri bağlama davranışını denetlemek için herhangi bir yolu var mı? Spring 4.1.3
kullanmayın '@ ModelAttribute' bunun için ... bunu kullanmayın ... Eğer kullanıcı giriş yapmış olmasını istiyorsanız bağlama veri için kullanılan değilse normal güvenlik ile bütünleşmeli ve özel bir çözüm kullanmak istiyorsanız gerçekten bir 'Kullanıcı 'ile ne yapacağını bilen kendi' HandlerMethodArgumentResolver'ı oluşturmak istiyorsanız' Principal 'kullanmalısınız. –
"Kullanıcı" aracılığıyla "kullanıcı" seçeneğini kullanabilmeniz gerekir, bu da @ModelAttribute ("kullanıcı") Kullanıcı kullanıcısına olan ihtiyacı ortadan kaldırır. – zeroflagL
Yorumlarınız için teşekkür ederiz, şimdilik, kullanıcıyı oturumdan çekmek için ModelMap # get() kullanmaya karar verdim, ancak daha sonra bu işlevselliği ele almayı amaçladığı için Spring güvenliğine geçeceğim. – troy