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

📄 auth.java

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JAVA
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! * */package biz.tbuy.common;import biz.tbuy.common.bean.BaseBean;import biz.tbuy.common.logs.Elog;import biz.tbuy.share.XmlOper;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import org.w3c.dom.Document;import org.w3c.dom.Element; import org.w3c.dom.NodeList;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> * * 载入网站的页面授权配置信息于applicationScope中 * 查看:ContextListener.java */public class Auth extends BaseBean{    private Map<String, List<String>> _auths;    public Auth(String authsPath) {        init(authsPath);    }    @Override    public String toString() {        return "Auth.class";    }        /**     * 判断该用户visitor是否有权限访问uri这个页面     * @param uri 所要访问的页面     * @param visitor 当前用户     * @return true 如果用户有权限, 否则返回false     */    public boolean isAllow(String uri, Visitor visitor) {        boolean isOk = true;    // 预设为允许访问        if (_auths != null) {            Set<String> keys = _auths.keySet();            for (String key : keys) {                if (uri.indexOf(key) != -1) {                    // 如果发现权限页面,而用户没有登录系统时,则返回false                    if (visitor == null || !visitor.isLogin()) {                        return false;                    }                    // 如果发现权限页面,则设为false,直到找到用户配匹的用户组                    isOk = false;                    // 如果用户为管理员                    if (getComApplication().isAdmin(visitor.getUser().getId())) {                        return true;                    }                    // 当用户所在的用户组配匹于权限设置中的用户组,                    // 同时该用户的用户组并非admin时,直接返回true                    // !group.equals(Constants.GROUP_ADMIN) 阻止用户直接在数据库中定义admin类型                    List<String> authGroups = _auths.get(key);                    String group = visitor.getUser().getGroup();                    if (authGroups.contains(group) && !group.equals(Constants.GROUP_ADMIN)) {                        return true;                    }                }            }        }        return isOk;    }        /**     * 获取页面权限配置信息     * 返回一个 Map类型,该Map 包含key(权限页面), value为一个list类型的集合,     * 包含经过授权的用户组列表,即该用户组可访问该页面,for example:<br>     * auths.get("pageURL") -> 取得授权的用户组列表ArrayList     * @return auths      */     public Map<String, List<String>> getAuths() {        return _auths;    }        /**     * 初始化权限页面,通过 ServletContext, 及权限配置文件路径     * 并设置applicationScope.authorizationFilter     * 设置authFilter的属性     * @param authsPath 权限配置文件的路径     */     private void init(String authsPath){        try {            _auths = new HashMap<String, List<String>>();            Document doc = XmlOper.getDocument(authsPath);            Element root = doc.getDocumentElement();            NodeList authorizations = root.getElementsByTagName("auth");            for (int i = 0; i < authorizations.getLength(); i++) {                Element auth = (Element) authorizations.item(i);                // 获取权限页面的URI                String uri = auth.getElementsByTagName("uri").item(0).getTextContent().trim();                List<String> groupsList = new ArrayList<String>();                Element userGroups = (Element) auth.getElementsByTagName("groups").item(0);                NodeList groups = userGroups.getElementsByTagName("group");                for (int n = 0; n < groups.getLength(); n++) {                    String group = groups.item(n).getTextContent().trim();                    if (group != null) {                        groupsList.add(group); // 设置可访问该页的用户组                    }                }                // 设置权限页面 及 被授权的用户组                _auths.put(uri, groupsList);            }            showState();        } catch (Exception e) {            Elog.log("Exception:Auth:init:" + e.getMessage());        }    }        public void showState() {        Set<String> keys = _auths.keySet();        for (String key : keys) {            System.out.println("--key:" + key);            List<String> groups = _auths.get(key);            for (String group : groups) {                System.out.println("group:" + group);            }        }    }}

⌨️ 快捷键说明

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