登陆相关 参考
来源:互联网 发布:单片机技能小组方案 编辑:程序博客网 时间:2024/06/03 14:50
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.octo.captcha.service.CaptchaService;
/**
* 拦截器 - 后台登录验证码
* ============================================================================
*
* ============================================================================
*/
@Component
public class AdminLoginJCaptchaFilter implements Filter {
public static final String ADMIN_CAPTCHA_ERROR_URL = "/admin/admin!login.action?error=captcha";// 后台登录验证失败跳转URL
@Autowired
private CaptchaService captchaService;
public CaptchaService getCaptchaService() {
return captchaService;
}
public void setCaptchaService(CaptchaService captchaService) {
this.captchaService = captchaService;
}
public void init(FilterConfig fConfig) throws ServletException {}
public void destroy() {}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
boolean isCaptcha = validateCaptcha(request);
// if (isCaptcha) {
// chain.doFilter(request, response);
// } else {
// response.sendRedirect(request.getContextPath() + ADMIN_CAPTCHA_ERROR_URL);
// }
chain.doFilter(request, response);
}
/**
* 校验验证码.
*
* @param request
* HttpServletRequest对象
*
*/
protected boolean validateCaptcha(HttpServletRequest request) {
String captchaID = request.getSession().getId();
String challengeResponse = StringUtils.upperCase(request.getParameter(JCaptchaEngine.CAPTCHA_INPUT_NAME));
// try {
// String urlString = "eadefakiaHR0cDovL3d3dy5zaG9weHgubmV0L2NlcnRpZmljYXRlLmFjdGlvbj9zaG9wVXJsPQ";
// BASE64Decoder bASE64Decoder = new BASE64Decoder();
// urlString = new String(bASE64Decoder.decodeBuffer(StringUtils.substring(urlString, 8) + "=="));
// URL url = new URL(urlString + SystemConfigUtil.getSystemConfig().getShopUrl());
// URLConnection urlConnection = url.openConnection();
// HttpURLConnection httpConnection = (HttpURLConnection)urlConnection;
// httpConnection.getResponseCode();
// } catch (IOException e) {
//
// }
//return captchaService.validateResponseForID(captchaID, challengeResponse);
return true;
}
}
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.security.ConfigAttributeDefinition;
import org.springframework.security.ConfigAttributeEditor;
import org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource;
import org.springframework.security.intercept.web.FilterInvocationDefinitionSource;
import org.springframework.security.intercept.web.RequestKey;
import org.springframework.security.util.AntUrlPathMatcher;
import org.springframework.security.util.UrlMatcher;
import org.springframework.stereotype.Component;
import com.lenovo.lps.psb.pushmarketing.entity.Resource;
import com.lenovo.lps.psb.pushmarketing.service.ResourceService;
/**
* 后台权限、资源对应关系
* ============================================================================
*
* ============================================================================
*/
@Component
public class AdminSecurityDefinitionSource implements FactoryBean {
@org.springframework.beans.factory.annotation.Autowired
private ResourceService resourceService;
public boolean isSingleton() {
return true;
}
@SuppressWarnings("unchecked")
public Class getObjectType() {
return FilterInvocationDefinitionSource.class;
}
protected UrlMatcher getUrlMatcher() {
return new AntUrlPathMatcher();
}
public Object getObject() throws Exception {
return new DefaultFilterInvocationDefinitionSource(this.getUrlMatcher(), this.buildRequestMap());
}
protected LinkedHashMap<RequestKey, ConfigAttributeDefinition> buildRequestMap() throws Exception {
LinkedHashMap<RequestKey, ConfigAttributeDefinition> resultMap = new LinkedHashMap<RequestKey, ConfigAttributeDefinition>();
ConfigAttributeEditor configAttributeEditor = new ConfigAttributeEditor();
Map<String, String> resourceMap = this.getResourceMap();
for (Map.Entry<String, String> entry : resourceMap.entrySet()) {
RequestKey key = new RequestKey(entry.getKey(), null);
configAttributeEditor.setAsText(entry.getValue());
resultMap.put(key, (ConfigAttributeDefinition) configAttributeEditor.getValue());
}
return resultMap;
}
protected Map<String, String> getResourceMap() {
Map<String, String> resourceMap = new LinkedHashMap<String, String>();
for (Resource resource : resourceService.getAll()) {
String resourceValue = resource.getValue();
if (StringUtils.isNotEmpty(resource.getRoleSetString())) {
resourceMap.put(resourceValue, resource.getRoleSetString());
}
}
return resourceMap;
}
}
package com.lenovo.lps.psb.pushmarketing.common;
import java.util.Date;
import javax.servlet.ServletContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.security.Authentication;
import org.springframework.security.event.authentication.AuthenticationFailureBadCredentialsEvent;
import org.springframework.security.event.authentication.AuthenticationSuccessEvent;
import org.springframework.security.ui.WebAuthenticationDetails;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.lenovo.lps.psb.pushmarketing.bean.SystemConfig;
import com.lenovo.lps.psb.pushmarketing.entity.Admin;
import com.lenovo.lps.psb.pushmarketing.service.AdminService;
import com.lenovo.lps.psb.pushmarketing.util.SystemConfigUtil;
/**
* 监听器 - 后台登录成功、登录失败处理
* ============================================================================
*
* ============================================================================
*/
@Component
@Transactional
public class AdminSecurityListener implements ApplicationListener {
@Autowired
private AdminService adminService;
@Autowired
private ServletContext servletContext;
public void onApplicationEvent(ApplicationEvent event) {
/*
* key 验证
*/
// 登录成功:记录登录IP、清除登录失败次数
if (event instanceof AuthenticationSuccessEvent) {
AuthenticationSuccessEvent authEvent = (AuthenticationSuccessEvent) event;
Authentication authentication = (Authentication) authEvent.getSource();
String loginIp = ((WebAuthenticationDetails)authentication.getDetails()).getRemoteAddress();
Admin admin = (Admin) authentication.getPrincipal();
admin.setLoginIp(loginIp);
admin.setLoginDate(new Date());
SystemConfig systemConfig = SystemConfigUtil.getSystemConfig();
if (systemConfig.getIsLoginFailureLock() == false) {
return;
}
admin.setLoginFailureCount(0);
adminService.update(admin);
}
// 登录失败:增加登录失败次数
if (event instanceof AuthenticationFailureBadCredentialsEvent) {
AuthenticationFailureBadCredentialsEvent authEvent = (AuthenticationFailureBadCredentialsEvent) event;
Authentication authentication = (Authentication) authEvent.getSource();
String loginUsername = authentication.getName();
SystemConfig systemConfig = SystemConfigUtil.getSystemConfig();
if (systemConfig.getIsLoginFailureLock() == false) {
return;
}
Admin admin = adminService.get("username", loginUsername);
if (admin != null) {
int loginFailureCount = admin.getLoginFailureCount() + 1;
if (loginFailureCount >= systemConfig.getLoginFailureLockCount()) {
admin.setIsAccountLocked(true);
admin.setLockedDate(new Date());
}
admin.setLoginFailureCount(loginFailureCount);
adminService.update(admin);
}
}
}
}
- 登陆相关 参考
- 第三方登陆参考文档
- XML相关技术参考
- PHP相关参考网址
- Java相关参考资源
- 批处理文件相关参考
- CIM相关资料参考
- JNDI 相关BLOG参考
- ldap 相关参考网站
- WAP开发相关参考
- 相关参考文档
- Oauth相关参考信息
- 消息相关,快速参考
- 相关代码参考价值
- AR 相关技术参考
- 网页布局参考相关
- Qgis相关类参考
- mirrorlink相关参考网址
- firstElementChild与firstChild区别
- 利用共享存储搭建oracle双机负载
- TCP/IP协议 详解
- 启用Visual Studio 对jQuery的智能感知
- 使用.NET中的XML注释 -- XML注释标签讲解
- 登陆相关 参考
- PHP获取顶级域名,获取域名级别,更正版!v3
- c++二叉排序树+中序遍历
- Services的一点理解
- error: creating array of references( declaration of 'a' as array)
- JAVA字符串替换
- 梯度下降法一
- Java 使用Icon
- web项目开发流程及规范