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

📄 loginaction.java

📁 OBPM是一个开源
💻 JAVA
字号:
package cn.myapps.core.security.action;

import java.util.Collection;
import java.util.HashSet;

import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import javax.servlet.http.Cookie;

import cn.myapps.constans.Web;
import cn.myapps.core.department.ejb.DepartmentProcess;
import cn.myapps.core.department.ejb.DepartmentVO;
import cn.myapps.core.user.action.WebUser;
import cn.myapps.core.user.ejb.UserProcess;
import cn.myapps.core.user.ejb.UserVO;
import cn.myapps.util.ProcessFactory;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionSupport;

public class LoginAction extends ActionSupport {
	private String username;

	private String password;

	private String application;

	private static final long serialVersionUID = -4277772173056045618L;

	public LoginAction() throws Exception {
	}

	public String doLogin() throws Exception {
		// file and to also use the specified CallbackHandler.

		LoginContext lc = null;
		try {
			UserProcess process = (UserProcess) ProcessFactory
					.createProcess(UserProcess.class);
			UserVO user = process.login(username, password, application);
			if (user != null && user.getStatus() == 1) {

				if (user.getLoginno().equalsIgnoreCase("admin")) {
					DepartmentProcess dp = (DepartmentProcess) ProcessFactory
					.createProcess(DepartmentProcess.class);
					DepartmentVO de=dp.getRootDepartmentByApplication(application);
					Collection cols=new HashSet();
					cols.add(de);
				    user.setDepartments(cols);
				}
				WebUser webUser = new WebUser(user);

				webUser.setApplicationid(application);

				ServletActionContext.getRequest().getSession().setAttribute(
						Web.SESSION_ATTRIBUTE_USER, webUser);
				ServletActionContext.getRequest().getSession().setAttribute(
						Web.SESSION_ATTRIBUTE_APPLICATION, application);

				Cookie cookie = new Cookie(Web.SESSION_ATTRIBUTE_APPLICATION,
						application);
				cookie.setMaxAge(60 * 60 * 24 * 30);
				ServletActionContext.getResponse().addCookie(cookie);
			}

			// lc = (LoginContext)
			// ServletActionContext.getRequest().getAttribute(
			// Web.SESSION_ATTRIBUTE_SUBJECT);
			// if (lc != null) {
			// lc.logout();
			// ServletActionContext.getRequest().setAttribute(
			// Web.SESSION_ATTRIBUTE_SUBJECT, null);
			// lc = null;
			// }
			//
			// lc = new LoginContext("MyApps", new PassiveCallbackHandler(
			// username, password));
			//
			// lc.login();
			//
			// Subject subject = lc.getSubject();
			// // subject.doAsPrivileged()
			//
			// // for test
			// subject.getPrincipals().add(new Principal() {
			// public String getName() {
			// return "helloworld";
			// }
			// });

			// ServletActionContext.getRequest().getSession().setAttribute(
			// Web.SESSION_ATTRIBUTE_SUBJECT, subject);

		} catch (LoginException le) {
			return ERROR;
		} catch (SecurityException se) {
			return ERROR;
		} catch (Exception e) {
			this.addFieldError("1", e.getMessage());
			return ERROR;
		}

		return SUCCESS;
	}

	public String doLogout() throws Exception {
		return SUCCESS;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getApplication() {
		return application;
	}

	public void setApplication(String application) {
		this.application = application;
	}

	

}

⌨️ 快捷键说明

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