Index: build.gradle =================================================================== diff -u -r17966 -r18059 --- build.gradle (.../build.gradle) (revision 17966) +++ build.gradle (.../build.gradle) (revision 18059) @@ -913,6 +913,7 @@ } else if (projectName == 'gdsy'){ // 广东省人民医院 compile (project(":ssts-gdsy-misc")) + compile (project(":ssts-client-misc")) } else if (projectName == 'hzszxrmyy' || projectName == 'dysyy'){ // 惠州市中心人民医院、德阳市人民医院(如果有其它医院继续扩充) compile (project(":ssts-client-misc")) Index: ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-gdsy.xml.back =================================================================== diff -u --- ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-gdsy.xml.back (revision 0) +++ ssts-web/src/main/resources/spring/security/applicationContext-acegi-security-gdsy.xml.back (revision 18059) @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: ssts-web/build.gradle =================================================================== diff -u -r17274 -r18059 --- ssts-web/build.gradle (.../build.gradle) (revision 17274) +++ ssts-web/build.gradle (.../build.gradle) (revision 18059) @@ -271,7 +271,7 @@ println "运行任务2:准备spring security xml文件,使用标准的或者项目定制的xml文件" // spring security.xml文件名的后缀,applicationContext-acegi-security-standard.xml.back def suffix = 'standard' - if (projectName == 'zd5y' || projectName == 'hzszxrmyy' || projectName == 'dysyy'){ + if (projectName == 'zd5y' || projectName == 'hzszxrmyy' || projectName == 'dysyy' || projectName == 'gdsy'){ suffix = projectName } Index: ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/filter/RequestHeaderAuthenticationFilter.java =================================================================== diff -u --- ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/filter/RequestHeaderAuthenticationFilter.java (revision 0) +++ ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/filter/RequestHeaderAuthenticationFilter.java (revision 18059) @@ -0,0 +1,44 @@ +package com.forgon.disinfectsystem.security.filter; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.log4j.Logger; +import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter; + +/** + * 根据请求的头信息进行登录认证,系统认为该用户已经通过了身份验证,不需要验证用户的密码 + * 目前广东省人民医院采用此方案,header的key为OAM_REMOTE_USER + * 如有其它医院将继续补充 + * @author shuyongfu + * @since date 2017-05-05 + */ +public class RequestHeaderAuthenticationFilter extends + AbstractPreAuthenticatedProcessingFilter { + + Logger logger = Logger.getLogger(this.getClass()); + /** + * 广东省医用户名请求头的key + */ + final String USERHEADERKEY_GDSY = "OAM_REMOTE_USER"; + /** + * 从request中获取登录的用户名 + */ + @Override + protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) { + String principal = request.getHeader(USERHEADERKEY_GDSY); + logger.debug("单点登录的工号是:" + principal); + return principal; + } + + /** + * 从request中获取登录的凭据,一般为密码。 + * 密码不能为空,如果为空则无法通过身份验证。 + * 此处返回固定的密码。 + */ + @Override + protected Object getPreAuthenticatedCredentials(HttpServletRequest request) { + String credentials = request.getParameter("up"); + return "password"; + } + +} Index: ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/handler/AuthenticationSuccessHandlerForGdsy.java =================================================================== diff -u --- ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/handler/AuthenticationSuccessHandlerForGdsy.java (revision 0) +++ ssts-client-misc/src/main/java/com/forgon/disinfectsystem/security/handler/AuthenticationSuccessHandlerForGdsy.java (revision 18059) @@ -0,0 +1,41 @@ +package com.forgon.disinfectsystem.security.handler; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; +import org.springframework.stereotype.Service; + +/** + * 广东省人民医院身份验证成功后的handler,跳转到登录后的主页 + * @author shuyongfu + * @since 2017-05-09 + */ +@Service("authenticationSuccessHandlerForGdsy") +public class AuthenticationSuccessHandlerForGdsy extends + SavedRequestAwareAuthenticationSuccessHandler { + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, + Authentication authentication) throws ServletException, IOException { + + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null && auth.isAuthenticated()) { + + String username = auth.getPrincipal().toString(); + String url = getDefaultTargetUrl(); + response.sendRedirect(url); + +// UserData userData = userService.getUserData(username); + // And then here more checks, handlings etc. + } + + + super.onAuthenticationSuccess(request, response, authentication); + } +}