viewabletag.java
来自「一个关于tlms的一个小程序 看看能否帮助到别人」· Java 代码 · 共 75 行
JAVA
75 行
package com.szmx.component.security.acegipro.taglibs.authz;
import org.acegisecurity.context.SecurityContextHolder;
import org.acegisecurity.GrantedAuthority;
import org.acegisecurity.SecurityConfig;
import org.acegisecurity.GrantedAuthorityImpl;
import org.acegisecurity.ConfigAttributeDefinition;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.JspException;
import com.szmx.framework.spring.context.ApplicationContextUtil;
import com.szmx.framework.base.web.BaseAction;
import com.szmx.component.security.acegipro.intercept.web.RdbmsBasedFilterInvocationDefinitionMap;
/**
* ================================================================
* Copyright 2006 szmx
* <p/>
* Change Revision
* ---------------------------------------------------------------
* Date Author Remarks
* Apr 3, 2006 BZhang Create class com.szmx.component.security.acegipro.taglibs.authz.ViewableTag
* ================================================================
*/
public class ViewableTag extends TagSupport {
private String resUrl;
private Boolean dsdEnabled = Boolean.FALSE; // default = false;
public void setResUrl(String resUrl) {
this.resUrl = resUrl;
}
public void setDsdEnabled(String dsdEnabled) {
this.dsdEnabled = Boolean.valueOf(dsdEnabled);
}
public int doStartTag() throws JspException {
if (checkViewable()) {
return Tag.EVAL_BODY_INCLUDE;
} else {
return Tag.SKIP_BODY;
}
}
private GrantedAuthority getCurrentGrantedAuthority() {
String roleName = (String) pageContext.getSession().getAttribute(BaseAction.CURRENT_GRANTED_AUTHORITY);
return (roleName != null) ? new GrantedAuthorityImpl(roleName) : null;
}
private GrantedAuthority[] getGrantedAuthorities() {
return SecurityContextHolder.getContext().getAuthentication().getAuthorities();
}
private boolean checkViewable() {
RdbmsBasedFilterInvocationDefinitionMap definitionMap = (RdbmsBasedFilterInvocationDefinitionMap)
ApplicationContextUtil.getBean("rdbmsBasedFilterInvocationDefinitionMap");
if (dsdEnabled.booleanValue()) {
GrantedAuthority authority = getCurrentGrantedAuthority();
ConfigAttributeDefinition def = definitionMap.lookupAttributes(resUrl);
return (def != null) && def.contains(new SecurityConfig(authority.getAuthority()));
} else {
GrantedAuthority[] authorities = getGrantedAuthorities();
for (int i=0; i<authorities.length; i++) {
ConfigAttributeDefinition def = definitionMap.lookupAttributes(resUrl);
if ((def != null) && def.contains(new SecurityConfig(authorities[i].getAuthority())) ) {
return true;
}
}
}
return false;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?