⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 securityfacadebean.java

📁 展示使用J2EE容器实现安全机制
💻 JAVA
字号:
package com.jdon.security.auth.ejb;

import javax.ejb.*;
import org.apache.log4j.Logger;
import com.jdon.servicelocator.ejb.ServiceLocator;
import com.jdon.servicelocator.ServiceLocatorException;

import com.jdon.security.auth.util.JNDINames;
import com.jdon.security.Constants;

import com.jdon.security.User;
import com.jdon.security.Role;

import com.jdon.security.auth.PrincipalException;

import com.jdon.controller.ejb.EJBControllerBean;

import com.jdon.asyncsender.ejb.*;
import com.jdon.asyncsender.util.MailUtil;

import com.jdon.mailer.Mail;

/**
 *
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Jdon.com Copyright (c) 2003</p>
 * <p>Company: 上海解道计算机技术有限公司</p>
 * @author banq
 * @version 1.0
 */
public class SecurityFacadeBean extends EJBControllerBean implements SessionBean {
  private final static Logger logger = Logger.getLogger(SecurityFacadeBean.class);

  SessionContext sessionContext;
  RoleManagerLocalHome roleManagerLocalHome;
  UserManagerLocalHome userManagerLocalHome;
  AsyncSenderLocalHome asyncSenderLocalHome;

  private User user = null;

  public void ejbCreate() throws CreateException {
    try {
      ServiceLocator sl = new ServiceLocator();
      roleManagerLocalHome = (RoleManagerLocalHome) sl.getLocalHome(
          JNDINames.ROLEMANAGER_HOME);

      userManagerLocalHome = (UserManagerLocalHome) sl.getLocalHome(
          JNDINames.USERMANAGER_HOME);

      asyncSenderLocalHome = (AsyncSenderLocalHome) sl.getLocalHome(
          JNDINames.ASYNC_SENDER_HOME);

    } catch (ServiceLocatorException ex) {
      logger.error("Service Locate error:" + ex);
      throw new CreateException();
    } catch (Exception ex) {
      logger.error("Exception:" + ex);
      throw new CreateException();
    }
  }

  /**
   * 获得UsermanagerLocal
   * @return
   */
  public UserManagerLocal getUserManager() {
    UserManagerLocal userManagerLocal = null;
    try {
      userManagerLocal = userManagerLocalHome.create();
    } catch (Exception ex) {
      logger.error("getUserManager() error:" + ex);
    }
    return userManagerLocal;
  }

  /**
   * 获得RoleManagerLocal
   * @return
   */
  public RoleManagerLocal getRoleManager() {
    RoleManagerLocal roleManagerLocal = null;
    try {
      roleManagerLocal = roleManagerLocalHome.create();
    } catch (Exception ex) {
      logger.error("getRoleManager() error:" + ex);
    }
    return roleManagerLocal;
  }



  /**
   * 获得当前session的User实例
   * @return
   */
  public User getUser() {
    if (this.user != null)
      return this.user;

    logger.debug("user is null, get it from principal ...");
    setUser();
    return this.user;
  }

  public void setUser() {
    try {
      this.user = getUserManager().getUserByPrincipal();
    } catch (PrincipalException e) {
      logger.error(" PrincipalException error : " + e);
    } catch (Exception ex) {
      logger.error(" can't getuserByPrincipal : " + ex);
    }

  }


  public boolean getPassword(String email) {
    logger.debug("--> enter getpassword");
    boolean success = false;
    try {
      User user = getUserManager().getUserByEmail(email);
      if (user == null)
        return success;

      String subject = " 用户名和密码";
      StringBuffer buffer = new StringBuffer();
      buffer.append(" 用户:").append(user.getName());
      buffer.append(" 密码:").append(user.getPassword());

      if (sendMail(user.getEmail(), subject, buffer.toString()))
        success = true;

    } catch (Exception ex) {
      logger.error(" getPassword: " + ex);
    }
    return success;
  }

  /**
   * 向JMS发出Email
   * @param toAddress
   * @param subject
   * @param content
   */
  public boolean sendMail(String toAddress, String subject, String content) {
    try {
      logger.debug(" -->enter send mail");
      Mail mail = new Mail();
      mail.setToAddress(toAddress);
      mail.setFromAddress("banq@jdon.com");
      mail.setSubject(subject);
      mail.setContent(content);

      String msg = MailUtil.getMsgFromMail(mail);

      AsyncSenderLocal asyncSenderLocal = asyncSenderLocalHome.create();
      asyncSenderLocal.sendAMessage(msg);
      logger.debug(" -->send mail to: " + toAddress + " successfully!");
      return true;
    } catch (Exception ex) {
      logger.error(" sendMail() error : " + ex);
      return false;
    }
  }


  public boolean isAdministrator() {
    return sessionContext.isCallerInRole(Role.ADMINISTRATOR);
  }

  public boolean isUser() {
    return sessionContext.isCallerInRole(Role.USER);
  }


  public void ejbRemove() {
    /**@todo Complete this method*/
  }

  public void ejbActivate() {
    /**@todo Complete this method*/
  }

  public void ejbPassivate() {
    /**@todo Complete this method*/
  }

  public void setSessionContext(SessionContext sessionContext) {
    this.sessionContext = sessionContext;
  }
  public void setUser(User user) {    this.user = user;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -