`

spring2.5 的 security 权限验证

阅读更多

 

package com.hd.security.service;
002  
003 import java.io.File;
004 import java.util.HashMap;
005 import java.util.Iterator;
006 import java.util.List;
007 import java.util.Map;
008 import java.util.Set;
009  
010 import javax.annotation.Resource;
011  
012 import org.dom4j.Document;
013 import org.dom4j.DocumentException;
014 import org.dom4j.Element;
015 import org.dom4j.io.SAXReader;
016 import org.hibernate.SessionFactory;
017 import org.springframework.dao.DataAccessException;
018 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
019 import org.springframework.security.userdetails.UserDetails;
020 import org.springframework.security.userdetails.UserDetailsService;
021 import org.springframework.security.userdetails.UsernameNotFoundException;
022 import org.springframework.stereotype.Repository;
023  
024 import com.hd.comm.constants.Authtype;
025 import com.hd.comm.constants.EncodeType;
026 import com.hd.comm.constants.XmlAssistType;
027 import com.hd.department.model.Authorities;
028 import com.hd.department.model.Role;
029 import com.hd.department.model.User;
030 import com.hd.security.core.SecurityManager;
031 import com.hd.util.SecurityAssist;
032 import com.hd.util.SystemAssist;
033 import com.hd.util.XmlAssist;
034  
035 @Repository("securityManager")
036 public class SecurityManagerImpl extends HibernateDaoSupport implements UserDetailsService ,SecurityManager{
037  
038     @Resource(name="sf")
039     public void setSuperSessionFactory(SessionFactory sessionFactory) {
040         super.setSessionFactory(sessionFactory);
041     }
042     /**
043      * 得到用户通过用户的CODE
044      */
045     @SuppressWarnings("unchecked")
046     @Override
047     public UserDetails loadUserByUsername(String username)throws UsernameNotFoundException, DataAccessException {
048          
049         List<User> users = getHibernateTemplate().find("FROM syuser WHERE username = ? AND disabled = "+false, username);
050         if(users.isEmpty()) {  
051             System.out.println("User is not exist");
052             throw new UsernameNotFoundException("User " + username + " 没有相应的权限");  
053         }
054         User user = users.get(0);
055         user.getAuthorities();
056         Set<Role> roles = user.getRoles();
057         for(Role role : roles){
058             System.out.println("装在用户["+user.getChineseName()+"]角色 ["+role.getRoleName()+"]权限集合"+role.getAuthorities());
059         }
060         //创建用户菜单
061         createUserMenu(user);
062         return user ;
063     }
064     /**
065      * 得到是有URL资源
066      */
067     @Override
068     public Map<String, String> loadUrlAuthorities() {
069         Map<String, String> urlAuthorities = new HashMap<String, String>();  
070         @SuppressWarnings("unchecked")
071         List<Authorities> urlResources = getHibernateTemplate().find("FROM Authorities WHERE authtype = ?", Authtype.URL);  
072         for(Authorities resource : urlResources) {  
073             urlAuthorities.put(resource.getAuthCode(), resource.getAuthValue());  
074         }  
075         return urlAuthorities;  
076     }
077     @SuppressWarnings("rawtypes")
078     @Override
079     public void createUserMenu(User user) {
080         try {
081             //装在MENU总文件准备筛选
082             SAXReader reader = new SAXReader();
083             Document allMenuDoc = reader.read(new File(SystemAssist.getSysRootPath()+XmlAssistType.SYSALLMENU.showInfo));
084             String path = SystemAssist.getSysRootPath()+XmlAssistType.USERMENU.showInfo+user.getUsername()+"-menu.xml";
085             if(!"admin".equals(user.getUsername())){
086                 Authtype[] authtypes = new Authtype[1];
087                 authtypes[0] = Authtype.MENU;
088                 Set<Authorities> authorities = SecurityAssist.getCurrentUserAuth(authtypes,user);
089                 List list = allMenuDoc.selectNodes("//*[@id]");
090                 Iterator it = list.iterator();  
091                 while (it.hasNext()) {  
092                     Element elt = (Element)it.next();
093                     boolean boo = false;
094                     for(Authorities auth : authorities){
095                         if(elt.attribute("id").getValue().equals(auth.getAuthValue())){
096                             boo = true;
097                         }
098                     }
099                     if(!boo){
100                         elt.detach();  
101                     }
102                 }
103                 XmlAssist.createXML(allMenuDoc, EncodeType.UTF8.showInfo, path);
104             }else{
105                 XmlAssist.createXML(allMenuDoc, EncodeType.UTF8.showInfo, path);
106             }
107         } catch (DocumentException e) {
108             System.out.println(e);
109         }       
110     }
111
分享到:
评论

相关推荐

    spring spring security2.5 jar

    在版本2.5时,Spring Security已经是一个成熟且功能丰富的安全框架,为开发者提供了一套强大的工具来管理用户的登录、权限控制以及会话管理。 在"spring security2.5 jar"中,包含了Spring Security框架的核心类和...

    Apache CXF2+Spring2.5轻松实现WebService

    Apache CXF和Spring提供了丰富的扩展点,可以集成如Spring Security来控制访问权限,使用Spring AOP来处理事务,以及通过CXF的拦截器机制来实现自定义的日志、验证等功能。 总结来说,Apache CXF 2与Spring 2.5的...

    spring-security 官方文档 中文版

    - Spring Security 的验证机制允许开发者自定义认证过程,包括用户凭证的检查和存储。 - **直接设置 SecurityContextHolder 的内容**:允许在特定情况下直接设置用户的 Authentication 信息,从而绕过常规的身份...

    spring security3 中文版本

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它提供了许多功能,包括登录表单、记住我功能、多身份验证器、基于注解的安全配置、CSRF 防护、OAuth2 客户端和服务端支持等。Spring Security ...

    spring-security-core-2.0.5.RELEASE.src

    1. **Authentication**(认证):Spring Security的核心组件之一是Authentication,它负责验证用户身份。在`org.springframework.security.authentication`包下,有多种认证机制,如...

    ssh(struts2.3.8+spring2.5+hibernate 3)

    在这个项目中,使用的是Struts2.3.8、Spring2.5和Hibernate3版本,这些都是相对早期但仍然广泛使用的组件。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它增强了Struts1的功能,...

    Spring_Security-3.0.1_中文自学教程.pdf

    - **Spring Security 的验证机制**:描述了 Spring Security 如何进行用户认证。 - **直接设置 SecurityContextHolder 的内容**:绕过正常的认证流程,直接设置认证信息。 ##### 5.4 在 Web 应用中验证 - **...

    securityfilter-spring

    总结,securityfilter-spring作为Spring Security在Spring 2.5环境下的实现,为企业级应用提供了全面的安全解决方案。通过XML配置,开发者可以灵活地定制安全策略,确保应用在处理敏感数据时的安全性。随着Spring...

    Spring_Security-3.0.1_官方文档

    ### Spring Security 3.0.1 官方文档解析 #### 一、Spring Security 概览 ##### 1.1 Spring Security 是什么? Spring Security 是一个功能强大的安全框架,为基于 Java 的应用程序提供了全面的安全解决方案。它...

    Struts2 + Spring 2.5 + Hibernate 3.2 整合文档及事例程序

    例如,对于大型项目,可能还需要考虑Spring Security或Acegi进行权限控制,或者使用Quartz进行定时任务等。 通过学习和实践SSH整合,开发者可以掌握Java Web开发中的核心技术,为构建高效、稳定的企业级应用打下...

    spring-security-reference-4.1.1.RELEASE

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它为 Java 应用程序提供了全面的安全服务,包括认证、授权、会话管理等。Spring Security 能够与任何基于 Java 的应用程序无缝集成,并且它支持...

    spring security 参考手册中文版

    Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...

    Spring Security3.1高级详细开发指南

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。Spring Security 3.1 版本提供了多种不同的配置方式来满足不同场景下的安全需求。 根据文档提供的内容,Spring Security 3.1 的使用方法主要...

    spring-security-reference

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它为应用程序提供了一种机制来保护自身免受未经授权的访问,并且能够控制对应用程序中的特定功能或数据的访问。Spring Security 的核心目标是为...

    Spring Security 2.0.x完全中文参考文档

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它是Spring项目的一个子项目,主要用来简化Java应用程序中的安全配置过程。Spring Security 提供了一套完整的解决方案来解决Web应用程序和普通...

Global site tag (gtag.js) - Google Analytics