`
墨香子
  • 浏览: 47206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ssh项目中添加spring security支持

阅读更多
对于spring security我只是初学者,原来只是想找一个用于权限验证的源码借鉴一下,结果一搜索,就搜到了spring security安全机制框架,我现在要将这个安全机制框架整合到我原来的ssh项目中去。
我现在只是在实验和学习阶段,没有深入的东西,用户名密码及其权限均是在xml文件配置的,以后有时间再学习一下如何和数据库交互,下面仅是简单的整合,将spring security的示例整合到项目中去。如果你是下载的spring security的发行包,会在其dist目录下找到一个spring-security-samples-tutorial-x.x.x.xxxxx.war的war包,我直接使用了这里的applicationContext-security.xml和jsp文件。

下面开始整合:

1.首先添加jar包依赖,我使用的maven来管理依赖包,只需添加下面依赖:
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

版本号自己控制,我使用的3.0.5.RELEASE版本,自己手动管理jar包依赖的,将dist目录下的除了war包和***-sources.jar外的所有jar包添加项目下。

2.在web.xml下配置spring security的过滤器和spring security的配置文件的位置,这里注意,在ssh框架整合spring security时,一定要将spring security的filter-mapping配置在struts2的filter-mapping之前,否则会出现如下错误:
HTTP ERROR 404

Problem accessing /Struts_Spring_Maven/spring_security_login. Reason:

    There is no Action mapped for namespace [/] and action name [spring_security_login] associated with context path [/Struts_Spring_Maven].

struts2和spring security配置如下:
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext.xml
            /WEB-INF/applicationContext-security.xml
        </param-value>
    </context-param>
    <!-- 配置Struts中心过滤器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>zwh.struts.maven.action</param-value>
        </init-param>
    </filter>
    
    <!-- 配置spring security的过滤器 -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    
    <!-- spring security的filter-mapping一定要配置struts的前面 -->
    <filter-mapping>
      <filter-name>springSecurityFilterChain</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- struts的filter-mapping -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


3.添加applicationContext-security.xml文件,我是直接将示例项目中的文件直接拷贝到我的项目中去的,拷贝到WEB-INF目录下。文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <global-method-security pre-post-annotations="enabled">
        <!-- AspectJ pointcut expression that locates our "post" method and applies security that way
        <protect-pointcut expression="execution(* bigbank.*Service.post*(..))" access="ROLE_TELLER"/>
        -->
    </global-method-security>

    <http use-expressions="true">
        <intercept-url pattern="/secure/extreme/**" access="hasRole('ROLE_SUPERVISOR')"/>
        <intercept-url pattern="/secure/**" access="isAuthenticated()" />
        <!-- Disable web URI authorization, as we're using <global-method-security> and have @Secured the services layer instead
        <intercept-url pattern="/listAccounts.html" access="isRememberMe()" />
        <intercept-url pattern="/post.html" access="hasRole('ROLE_TELLER')" />
        -->
        <intercept-url pattern="/**" access="permitAll" />
        <form-login />
        <logout />
        <remember-me />
<!--
    Uncomment to enable X509 client authentication support
        <x509 />
-->
        <!-- Uncomment to limit the number of sessions a user can have -->
        <session-management invalid-session-url="/timeout.jsp">
            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management>

    </http>

    <!--
    Usernames/Passwords are
        rod/koala
        dianne/emu
        scott/wombat
        peter/opal
    -->
    <authentication-manager>
        <authentication-provider>
            <password-encoder hash="md5"/>
            <user-service>
                <user name="rod" password="a564de63c2d0da68cf47586ee05984d7" authorities="ROLE_SUPERVISOR, ROLE_USER, ROLE_TELLER" />
                <user name="dianne" password="65d15fe9156f9c4bbffd98085992a44e" authorities="ROLE_USER,ROLE_TELLER" />
                <user name="scott" password="2b58af6dddbd072ed27ffc86725d7d3a" authorities="ROLE_USER" />
                <user name="peter" password="22b5c9accc6e1ba628cedc63a72d57f8" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

</beans:beans>


从该文件中可以看到/secure路径下面的所有文件的访问需要登陆才能访问,而/secure/extreme路径下的所有文件的访问必须是超级用户,即具备ROLE_SUPERVISOR的角色。rod是超级用户,密码是koala,后面登陆需要使用。

4.在项目目录下创建secure目录和secure/extreme目录,并在这些目录下放一些需要验证才能访问的页面,我为了省事,将示例中jsp页面直接拷贝到项目目录下了。

5.下面将该项目添加到tomcat中去,运行,访问http://localhost:8080/项目名称/secure/index.jsp 。这时你发现并不是展示出你访问的页面,而是出现了一个登陆页面。如下:


6.输入用户名rod和密码koala,提交,这时就可以看到了你想要访问的页面了。

7.如果遇到如下问题:
 The absolute uri: http://www.springframework.org/security/tags cannot be resolved in either web.xml or the jar files deployed with this application.

对于maven还需要添加如下依赖
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

自己管理jar包需要添加spring-security-taglibs-3.0.5.RELEASE.jar包及其依赖包。
  • 大小: 18.8 KB
分享到:
评论

相关推荐

    ssh项目添加spring Security

    1. **添加依赖**:在SSH项目中,我们需要在`pom.xml`或`build.gradle`文件中添加Spring Security的依赖。确保版本与项目的其他Spring库兼容。 2. **配置Spring Security**:创建一个名为`security-config.xml`的...

    maven-ssh-spring security

    【标题】"maven-ssh-spring security" 涉及到的是在Java开发中使用Maven构建的一个集成Spring Security的SSH(Struts2、Spring、Hibernate)项目。SSH是Java Web开发中常见的三大框架,而Spring Security则是一个...

    spring Security整合SSH

    在本项目中,我们将探讨如何将Spring Security与SSH(Struts2、Spring、Hibernate)框架整合,以实现一个完整的基于数据库的用户认证和授权系统。 SSH是Java开发中常用的三大框架组合,它们各自负责不同的职责:...

    SSH + Spring Security3.2例子

    SSH + Spring Security3.2例子

    ssh整合spring Security

    在Spring Security中,可以通过配置不同的认证Provider(如DaoAuthenticationProvider),从数据库中读取用户信息进行认证。通常,用户信息存储在UserDetails接口的实现类中,如UserDetailsImpl,包含了用户名、密码...

    SSH集成Spring+hibernate+security 用户管理

    以上就是关于"SSH集成Spring+hibernate+security 用户管理"项目的主要知识点,涵盖了Spring框架的依赖注入、Hibernate的ORM、Spring Security的权限控制,以及如何在实际项目中综合运用这些技术。这样的系统设计有助...

    SSH+Spring Security+MySQL

    在实际项目中,SSH+Spring Security+MySQL的集成可能涉及以下步骤: 1. 配置Struts2和Spring Security的拦截器,确保请求被正确地路由和过滤。 2. 设计并实现用户实体类、角色实体类以及它们之间的关联,使用...

    Spring集成SpringSecurity依赖包

    标题中提到的"Spring集成SpringSecurity依赖包"应该包含了这些必要的依赖,包括Spring Security本身和可能的Spring MVC依赖。 2. **配置Spring Security**:创建一个配置类,继承自`WebSecurityConfigurerAdapter`...

    SpringSecurity 2 权限基于数据库--完整DEMO(带数据库文件)

    在SpringSecurity中,角色是预定义的一组权限集合,而权限则代表了用户可以执行的具体操作。在DEMO中,数据库中的`authorities`表存储了用户角色和对应的权限。 5. **访问决策管理**: - SpringSecurity的访问决策...

    spring security项目示例下载

    spring security配置项目下载,里面前台使用了easyui。 我的项目是用maven搭建的,如果你配置了maven,那么就会可以很轻松的运行起项目来了, 步骤: 1、在我的项目下找到database文件夹,把里面的union_ssh.sql文件...

    使用spring security保护ssh项目http资源

    此资源是对spring security使用数据库存储资源、角色、用户信息来保护http资源的实现的具体实现。可以参阅下文。 http://blog.csdn.net/shierqu/article/details/48803555 ...

    ssh+security实现权限管理

    在"ssh+security"的组合中,SSH可能指的是服务器端的身份验证和加密通信,而Spring Security则负责应用层的权限管理和访问控制。这种结合可以构建一个强大的权限管理系统,不仅保护了网络通信的安全,还确保了用户对...

    Spring Security 文档

    在第一种方法中,Spring Security的示例项目`spring-security-samples-tutorial-3.0.2.RELEASE`提供了硬编码配置的参考,它演示了如何在XML配置文件中定义用户、密码和权限。这种方法适合初学者快速了解Spring ...

    Spring Security 源码

    在Spring Security中,角色和权限是通过权限表达式(如`hasRole('ROLE_ADMIN')`)来定义的。角色通常代表一种用户类型,而权限则是更细粒度的操作许可。用户可以通过关联角色来获取相应的权限。 5. **Remember-Me...

    简单银行系统(webservice,springsecurity,ssh,ant,axis,ftl)

    【标题】"简单银行系统(webservice,springsecurity,ssh,ant,axis,ftl)" 提供的是一个基于多个核心技术构建的银行系统实例。这个项目涵盖了Web服务、安全框架、Java开发工具链以及模板引擎等多个方面的内容,对于学习...

    ssh+spring security(noe4j,fastds)

    在Spring Security中,可以结合Noe4j实现复杂的安全权限管理,特别是在有大量关系数据需要处理时,图数据库的优势明显。 6. **FastDS**:FastDS可能是指Fast Data Services,一个用于大数据处理和分析的系统。它...

    移动ssh项目struts+spring+hibernate+oracle

    在本项目中,Spring主要负责管理Bean的生命周期,协调SSH框架间的交互,并提供事务控制,确保数据的一致性。 **Hibernate** 是一个对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库。Hibernate通过...

    spring-security-3.0.5.RELEASE

    在Spring Security 3.0.5.RELEASE版本中,我们看到了一系列稳定且强大的安全特性,这些特性对于开发人员构建安全的SSH(Spring、Struts和Hibernate)应用程序至关重要。 一、Spring Security基础 1. **认证机制**...

    oauth2-client-springsecurity5.zip

    总之,“oauth2-client-springsecurity5.zip”项目提供了一个实战案例,演示了如何在Spring Boot应用中集成OAuth2客户端和Spring Security 5,使开发者能够安全、高效地处理用户授权。通过阅读和运行这个示例,你将...

    spring-security-oauth-master

    在Spring Boot项目中,可以通过以下方式配置Spring Security OAuth2: 1. 添加依赖:引入`spring-security-oauth2-server`和`spring-security-oauth2-client`库。 2. 配置OAuth2服务器:创建`...

Global site tag (gtag.js) - Google Analytics