2011-12-12 49 views
6

Trong ứng dụng web với Spring MVC và Spring Security.Bảo mật mùa xuân: setUserPrincipal theo cách thủ công

Có cách nào để đặt UserPrincipal theo cách thủ công không?

Tôi cần chuyển sang người dùng khác bằng phần quản trị viên của ứng dụng web của tôi. Trong bộ điều khiển của tôi, có thể setUserPrincipal trong yêu cầu không? Để kết nối như thể tôi là một người khác.

Giống như rằng:. Request.setUserPrincipal() getName()

+0

Bạn có thể cân nhắc sử dụng bộ lọc SwitchUser được tích hợp vào Spring. Xem câu trả lời thứ hai ở đây: http://stackoverflow.com/questions/2563220/how-to-change-granted-role-temporarily-to-achieve-view-the-site-as-someone-els hoặc các JavaDocs có liên quan ở đây : http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.html – BobG

Trả lời

4

Tôi đã làm những việc như thế này để tự động đăng nhập người ở sau khi đăng ký. Dường như nó sẽ làm những gì bạn đang tìm kiếm:

Authentication authentication = new UsernamePasswordAuthenticationToken(
      userService.loadUserByUsername(u.getUserName()), null, 
      AuthorityUtils.createAuthorityList("ROLE_USER")); 
SecurityContextHolder.getContext().setAuthentication(authentication); 

Tôi đang lấy người dùng của tôi từ một dịch vụ. Điều này phải triển khai giao diện org.springframework.security.core.userdetails.UserDetails.

Tôi nghĩ điều này sẽ cung cấp cho bạn ý tưởng tốt về những gì cần làm. Tôi nhớ đã mất một thời gian để ghép chúng lại với nhau từ các tài liệu.

Các vấn đề liên quan