• spring-webservice.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://cxf.apache.org/jaxws 
        http://cxf.apache.org/schemas/jaxws.xsd">
        <import resource="classpath:META-INF/cxf/cxf.xml" />
        <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
        <!-- 客户端Portal配置webservice -->
        <!-- cxf服务端安全认证 Webservice -->
        <bean id="scurityServiceBean" class="cn.edu.hbcf.privilege.ws.impl.SeurityServiceImpl">
        </bean>
        <jaxws:endpoint id="seurityService" address="/SecurityService"
            implementor="#scurityServiceBean">
            <jaxws:inInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
                <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
                <!--  <bean class="cn.edu.hbcf.privilege.ws.interceptor.ClientInterceptor"/> -->
            </jaxws:inInterceptors>
            <jaxws:outInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
            
            </jaxws:outInterceptors>
        </jaxws:endpoint>
        
        <jaxws:endpoint id="userService" address="/UserService"
            implementor="#userWebServiceImpl">
            <jaxws:inInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
                <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
                <bean class="cn.edu.hbcf.privilege.ws.interceptor.ClientInterceptor"/>
            </jaxws:inInterceptors>
        </jaxws:endpoint>
        
    
        <jaxws:endpoint id="cxfSecuityService"  address="/getCxfSecuityService"
            implementor="#cxfSecuityServiceImpl">
            <jaxws:inInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
                <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
            </jaxws:inInterceptors>
        </jaxws:endpoint>
        
    </beans>
    SecurityService 
    package cn.edu.hbcf.privilege.ws;
    
    import java.util.List;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.xml.soap.SOAPException;
    
    import cn.edu.hbcf.common.vo.Criteria;
    import cn.edu.hbcf.privilege.pojo.BaseModules;
    import cn.edu.hbcf.privilege.pojo.BaseUsers;
    @WebService
    public interface SecurityService {
        
        
         /**
         * 登录事件,返回登录状态
         * @param criteria
         * @return
         */
        String selectByBaseUser(@WebParam(name = "criteria")
        Criteria criteria);
        
        
        BaseUsers selectByExample(@WebParam(name = "criteria")
                Criteria criteria);
        
        /**
         * 用户登录
         * @param account 账号 必需
         * @param password 密码 必需
         * @return  登录成功则返回01 否则返回失败信息
         */
        String checkLogin(@WebParam(name="account") String account,@WebParam(name="password") String password,@WebParam(name="token") String token) throws SOAPException;
        
        /**
         * 根据用户账号返回用户信息
         * @param account
         * @return
         */
        BaseUsers getUserByAccount(@WebParam(name="account") String account,@WebParam(name="token") String token) throws SOAPException;
        
        /**
         * 返回用户权限
         * @param baseUsers
         * @return
         */
        List<BaseModules> getMobileModules(@WebParam(name="account")  String account,@WebParam(name="token") String token) throws SOAPException;
    }
    package cn.edu.hbcf.privilege.ws.impl;
    
    import java.util.List;
    
    import javax.jws.WebService;
    import javax.xml.soap.SOAPException;
    
    import org.apache.commons.codec.digest.DigestUtils;
    import org.apache.commons.lang.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    
    import cn.edu.hbcf.common.vo.Criteria;
    import cn.edu.hbcf.common.vo.TreeMenu;
    import cn.edu.hbcf.framework.service.AbstractRegisterService;
    import cn.edu.hbcf.privilege.dao.BaseUsersMapper;
    import cn.edu.hbcf.privilege.pojo.BaseModules;
    import cn.edu.hbcf.privilege.pojo.BaseUsers;
    import cn.edu.hbcf.privilege.service.BaseRoleModuleService;
    import cn.edu.hbcf.privilege.service.BaseUsersService;
    import cn.edu.hbcf.privilege.ws.SecurityService;
    
    @WebService(serviceName = "securityService", portName = "securityServicePort", endpointInterface = "cn.edu.hbcf.privilege.ws.SecurityService")
    public class SeurityServiceImpl extends AbstractRegisterService implements
            SecurityService {
    
        private final String TOKEN = "8b1749f054d35ea24ea4101eccbabb7e";
    
        @Autowired
        private BaseUsersService userService;
    
        @Autowired
        private BaseUsersMapper userMapper;
    
        @Autowired
        private BaseRoleModuleService baseRoleModuleService;
    
        @Override
        public String checkLogin(String account, String password, String token)
                throws SOAPException {
            if (TOKEN.equals(token)) {
                if (StringUtils.isBlank(account)) {
                    throw new SOAPException("用户账号account不能为空!");
                }
                if (StringUtils.isBlank(password)) {
                    throw new SOAPException("用户密码password不能为空!");
                }
    
                Criteria criteria = new Criteria();
                password = DigestUtils.md5Hex(password);
                criteria.put("account", account);
                criteria.put("passwordIn", password);
                return userService.selectByBaseUser(criteria);
            } else {
                throw new SOAPException("用户权限不足!");
    
            }
        }
    
        @Override
        public List<BaseModules> getMobileModules(String account,String token)
                throws SOAPException {
            if (TOKEN.equals(token)) {
            if (StringUtils.isBlank(account)) {
                throw new SOAPException("用户账号account不能为空!");
            }
            BaseUsers baseUser = new BaseUsers();
            List<String> roleIdList = baseRoleModuleService
                    .getUserRoleList(baseUser);
            baseUser.setRoleIdList(roleIdList);
            Criteria c = new Criteria();
            c.put("user", baseUser);
            c.put("appId", 12);
            TreeMenu menu = baseRoleModuleService.selectModulesByUser(c);
            return menu.getList();
            } else {
                throw new SOAPException("用户权限不足!");
    
            }
        }
    
        @Override
        public BaseUsers getUserByAccount(String account,String token) throws SOAPException {
            if (TOKEN.equals(token)) {
            if (StringUtils.isBlank(account)) {
                throw new SOAPException("用户账号account不能为空!");
            }
            BaseUsers user = null;
            Criteria c = new Criteria();
            c.put("account", account);
            List<BaseUsers> userList = userMapper.queryUserList(c);
            if (userList.size() > 0) {
                user = userList.get(0);
            }
            return user;
            } else {
                throw new SOAPException("用户权限不足!");
    
            }
        }
    
        @Override
        public String selectByBaseUser(Criteria criteria) {
            // TODO Auto-generated method stub
            return userService.selectByBaseUser(criteria);
        }
    
        @Override
        public BaseUsers selectByExample(Criteria criteria) {
              BaseUsers user = null;
                List<BaseUsers> userList = userService.selectByExample(criteria);        
                if(userList.size()>0){
                    user = userList.get(0);
                    user.setRoleIdList(baseRoleModuleService.getUserRoleList(user));
                }
                return user;
        }
    
    }

    CxfSecuityService

    package cn.edu.hbcf.privilege.ws;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    @WebService
    public interface CxfSecuityService {
        
        
        String registerUser(@WebParam(name="userName")String userName,@WebParam(name="password") String password);  
    
    }

    CxfSecuityServiceImpl

    package cn.edu.hbcf.privilege.ws.impl;
    
    
    import java.util.List;
    
    import javax.annotation.Resource;
    import javax.jws.WebService;
    import javax.servlet.http.HttpSession;
    import javax.xml.ws.WebServiceContext;
    import javax.xml.ws.handler.MessageContext;
    
    import org.apache.commons.codec.digest.DigestUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.edu.hbcf.common.vo.Criteria;
    import cn.edu.hbcf.framework.dao.FrameworkMapper;
    import cn.edu.hbcf.framework.pojo.APIKeyWebservice;
    import cn.edu.hbcf.privilege.dao.BaseAPIKeysMapper;
    import cn.edu.hbcf.privilege.pojo.BaseAPIKeys;
    import cn.edu.hbcf.privilege.ws.CxfSecuityService;
    
    @Service
    @WebService(serviceName = "cxfSecuityService", portName = "cxfSecuityServicePort", endpointInterface = "cn.edu.hbcf.privilege.ws.CxfSecuityService")
    public class CxfSecuityServiceImpl implements CxfSecuityService{
    
        
          @Resource    
          private WebServiceContext wsContext;     
          private MessageContext mc;     
          private HttpSession session;     
          
          @Autowired
            private BaseAPIKeysMapper keyMapper;
            @Autowired
            private FrameworkMapper frameWorkMapper;
            
    
        @Override
        public String registerUser(String userName, String password) {
            Criteria criteria = new Criteria();
            criteria.put("keyName", userName);
            List<BaseAPIKeys> keysList = keyMapper.selectByExample(criteria);
            if (!keysList.isEmpty()) {
                BaseAPIKeys userKey = keysList.get(0);
                password = DigestUtils.md5Hex(password);
                if (password.equals(userKey.getKeyPassword())) {
                     mc = wsContext.getMessageContext();     
                    
                    session = ((javax.servlet.http.HttpServletRequest) mc
                            .get(MessageContext.SERVLET_REQUEST)).getSession();
    
                    ((javax.servlet.ServletContext) mc
                            .get(MessageContext.SERVLET_CONTEXT)) .setAttribute(
                            "session", session);
                    session.setAttribute("msg", "ok");
                    criteria.clear();
                    criteria.put("key_id", userKey.getKeyId());
                    List<APIKeyWebservice> list = frameWorkMapper.queryListByAPIKeyId(criteria);
                    session.setAttribute("perm", list);
                    return "认证成功!";
                }
            }
            return "认证失败!";
        }
    
    
    }
  • 相关阅读:
    Ribbon【负载均衡策略】
    Ribbon【入门】
    Mysql主从复制原理及同步延迟问题
    JWT 身份认证优缺点分析以及常见问题解决方案
    Feign【token传递】
    Feign【首次请求失败】
    Feign【文件上传】
    Feign【替换默认的feign client】
    Feign【开启GIZP压缩】
    Feign【@FeignClient】
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/4942950.html
Copyright © 2020-2023  润新知