📄 loginaction.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 + -