You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by lh...@apache.org on 2010/12/10 01:14:23 UTC

svn commit: r1044181 - in /shiro/trunk: ./ core/src/test/java/org/apache/shiro/test/ samples/spring-client/ samples/spring-client/src/main/resources/ samples/spring/ samples/spring/src/main/java/org/apache/shiro/samples/spring/ samples/spring/src/main/...

Author: lhazlewood
Date: Fri Dec 10 00:14:22 2010
New Revision: 1044181

URL: http://svn.apache.org/viewvc?rev=1044181&view=rev
Log:
Updated sample Spring application to use the correct Spring libraries.  Now deploys successfully, although Spring remoting is failing for the Swing app.

Added:
    shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/
    shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/SaltAwareJdbcRealm.java
Removed:
    shiro/trunk/samples/spring/src/main/resources/sample-users.properties
Modified:
    shiro/trunk/core/src/test/java/org/apache/shiro/test/AbstractShiroTest.java
    shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroIntegrationTest.java
    shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroUnitTest.java
    shiro/trunk/pom.xml
    shiro/trunk/samples/spring-client/pom.xml
    shiro/trunk/samples/spring-client/src/main/resources/webstart.spring.xml
    shiro/trunk/samples/spring/pom.xml
    shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java
    shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LoginController.java
    shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
    shiro/trunk/samples/spring/src/main/webapp/WEB-INF/applicationContext.xml
    shiro/trunk/samples/spring/src/main/webapp/WEB-INF/web.xml
    shiro/trunk/samples/spring/src/main/webapp/index.jsp

Modified: shiro/trunk/core/src/test/java/org/apache/shiro/test/AbstractShiroTest.java
URL: http://svn.apache.org/viewvc/shiro/trunk/core/src/test/java/org/apache/shiro/test/AbstractShiroTest.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/core/src/test/java/org/apache/shiro/test/AbstractShiroTest.java (original)
+++ shiro/trunk/core/src/test/java/org/apache/shiro/test/AbstractShiroTest.java Fri Dec 10 00:14:22 2010
@@ -12,7 +12,7 @@ import org.junit.AfterClass;
 /**
  * Abstract test case showing how to use Shiro in testing environments.
  *
- * @since 1.1.1
+ * @since 1.2
  */
 public abstract class AbstractShiroTest {
 

Modified: shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroIntegrationTest.java
URL: http://svn.apache.org/viewvc/shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroIntegrationTest.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroIntegrationTest.java (original)
+++ shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroIntegrationTest.java Fri Dec 10 00:14:22 2010
@@ -11,7 +11,7 @@ import org.junit.Test;
 /**
  * Simple example test class to be used to show how one might write Shiro-compatible unit tests.
  *
- * @since 1.1.1
+ * @since 1.2
  */
 public class ExampleShiroIntegrationTest extends AbstractShiroTest {
 

Modified: shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroUnitTest.java
URL: http://svn.apache.org/viewvc/shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroUnitTest.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroUnitTest.java (original)
+++ shiro/trunk/core/src/test/java/org/apache/shiro/test/ExampleShiroUnitTest.java Fri Dec 10 00:14:22 2010
@@ -1,8 +1,6 @@
 package org.apache.shiro.test;
 
-import org.apache.shiro.mgt.*;
 import org.apache.shiro.subject.Subject;
-import org.apache.shiro.mgt.SecurityManager;
 import org.junit.After;
 import org.junit.Test;
 
@@ -11,6 +9,8 @@ import static org.easymock.EasyMock.expe
 
 /**
  * Simple example test class showing how one may perform unit tests for code that requires Shiro APIs.
+ *
+ * @since 1.2
  */
 public class ExampleShiroUnitTest extends AbstractShiroTest {
 

Modified: shiro/trunk/pom.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/pom.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/pom.xml (original)
+++ shiro/trunk/pom.xml Fri Dec 10 00:14:22 2010
@@ -371,7 +371,7 @@
             <dependency>
                 <groupId>javax.servlet</groupId>
                 <artifactId>jstl</artifactId>
-                <version>1.2</version>
+                <version>1.1.2</version>
                 <scope>provided</scope>
             </dependency>
             <dependency>

Modified: shiro/trunk/samples/spring-client/pom.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring-client/pom.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring-client/pom.xml (original)
+++ shiro/trunk/samples/spring-client/pom.xml Fri Dec 10 00:14:22 2010
@@ -18,7 +18,8 @@
   ~ under the License.
   -->
 <!--suppress osmorcNonOsgiMavenDependency	-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
     <parent>
         <groupId>org.apache.shiro.samples</groupId>
@@ -40,7 +41,7 @@
         <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
-            <scope>compile</scope>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.shiro</groupId>
@@ -62,48 +63,25 @@
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
-            <artifactId>spring-aop</artifactId>
-            <version>2.5.6</version>
+            <artifactId>spring-context</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
-            <artifactId>spring-context-support</artifactId>
-            <version>2.5.6</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>commons-logging</groupId>
-                    <artifactId>commons-logging</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-            <version>2.5.6</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>commons-logging</groupId>
-                    <artifactId>commons-logging</artifactId>
-                </exclusion>
-            </exclusions>
+            <artifactId>spring-webmvc</artifactId>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.5.6</version>
-            <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
-            <version>1.5.6</version>
-            <scope>compile</scope>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
-            <version>1.5.6</version>
-            <scope>compile</scope>
+            <scope>runtime</scope>
         </dependency>
     </dependencies>
 
@@ -129,19 +107,16 @@
                         <!--inputTemplate>src/main/jnlp/template.vm</inputTemplate--> <!--	relative to	inputTemplateResourcePath	-->
                         <outputFile>shiro.jnlp.jsp</outputFile>
                         <!--	defaults to	launch.jnlp	-->
-
                         <mainClass>org.apache.shiro.samples.spring.ui.WebStartDriver</mainClass>
                     </jnlp>
 
-
                     <sign>
                         <keystore>jsecurity-sample.jks</keystore>
                         <storepass>jsecurity</storepass>
                         <alias>jsecurity</alias>
                         <verify>false</verify>
                     </sign>
-
-                    <!--	BUILDING PROCESS -->
+                    <!-- BUILDING PROCESS -->
                     <pack200>true</pack200>
                     <verbose>false</verbose>
 

Modified: shiro/trunk/samples/spring-client/src/main/resources/webstart.spring.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring-client/src/main/resources/webstart.spring.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring-client/src/main/resources/webstart.spring.xml (original)
+++ shiro/trunk/samples/spring-client/src/main/resources/webstart.spring.xml Fri Dec 10 00:14:22 2010
@@ -34,7 +34,7 @@ http://www.springframework.org/schema/ut
 
   <bean id="sampleManager"
         class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
-    <property name="serviceUrl" value="http://localhost:9080/shiro/remoting/sampleManager"/>
+    <property name="serviceUrl" value="http://localhost:8080/shiro-samples-spring/remoting/sampleManager"/>
     <property name="serviceInterface" value="org.apache.shiro.samples.spring.SampleManager"/>
     <property name="remoteInvocationFactory" ref="secureRemoteInvocationFactory"/>
   </bean>

Modified: shiro/trunk/samples/spring/pom.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/pom.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/pom.xml (original)
+++ shiro/trunk/samples/spring/pom.xml Fri Dec 10 00:14:22 2010
@@ -45,10 +45,10 @@
                 <artifactId>maven-jetty-plugin</artifactId>
                 <version>${jetty.version}</version>
                 <configuration>
-                    <contextPath>/shiro</contextPath>
+                    <contextPath>/shiro-samples-spring</contextPath>
                     <connectors>
                         <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
-                            <port>9080</port>
+                            <port>8080</port>
                             <maxIdleTime>60000</maxIdleTime>
                         </connector>
                     </connectors>
@@ -175,7 +175,6 @@
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>jstl</artifactId>
-            <version>1.2</version>
             <scope>runtime</scope>
         </dependency>
     </dependencies>

Modified: shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java (original)
+++ shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java Fri Dec 10 00:14:22 2010
@@ -76,13 +76,13 @@ public class BootstrapDataPopulator impl
         //The first argument to the hash constructor is the actual value to be hased.  The 2nd is the
         //salt.  In this simple demo scenario, the username and the password are the same, but to clarify the
         //distinction, you would see this in practice:
-        //new Sha256Hash( <password>, <username> )
+        //new Sha256Hash( <password>, <cryptographically strong randomly generated salt> (not the username!) )
         String query = "insert into users values ('user1', '" + new Sha256Hash("user1", "user1").toBase64() + "' )";
         jdbcTemplate.execute(query);
         log.debug("Created user1.");
 
         //password is 'user2' SHA hashed and base64 encoded:
-        query = "insert into users values ( 'user2', '" + new Sha256Hash("user2", "user2").toBase64() + "' )";
+        query = "insert into users values ( 'user2', '"  + new Sha256Hash("user2", "user2").toBase64() + "' )";
         jdbcTemplate.execute(query);
         log.debug("Created user2.");
 

Added: shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/SaltAwareJdbcRealm.java
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/SaltAwareJdbcRealm.java?rev=1044181&view=auto
==============================================================================
--- shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/SaltAwareJdbcRealm.java (added)
+++ shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/realm/SaltAwareJdbcRealm.java Fri Dec 10 00:14:22 2010
@@ -0,0 +1,103 @@
+package org.apache.shiro.samples.spring.realm;
+
+import org.apache.shiro.authc.*;
+import org.apache.shiro.realm.jdbc.JdbcRealm;
+import org.apache.shiro.util.JdbcUtils;
+import org.apache.shiro.util.SimpleByteSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * Realm that exists to support salted credentials.  The JdbcRealm implementation needs to be updated in a future
+ * Shiro release to handle this.
+ */
+public class SaltAwareJdbcRealm extends JdbcRealm {
+
+    private static final Logger log = LoggerFactory.getLogger(SaltAwareJdbcRealm.class);
+
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
+        UsernamePasswordToken upToken = (UsernamePasswordToken) token;
+        String username = upToken.getUsername();
+
+        // Null username is invalid
+        if (username == null) {
+            throw new AccountException("Null usernames are not allowed by this realm.");
+        }
+
+        Connection conn = null;
+        AuthenticationInfo info = null;
+        try {
+            conn = dataSource.getConnection();
+
+            String password = getPasswordForUser(conn, username);
+
+            if (password == null) {
+                throw new UnknownAccountException("No account found for user [" + username + "]");
+            }
+
+            SimpleAuthenticationInfo saInfo = new SimpleAuthenticationInfo(username, password, getName());
+            /**
+             * This (very bad) example uses the username as the salt in this sample app.  DON'T DO THIS IN A REAL APP!
+             *
+             * Salts should not be based on anything that a user could enter (attackers can exploit this).  Instead
+             * they should ideally be cryptographically-strong randomly generated numbers.
+             */
+            saInfo.setCredentialsSalt(new SimpleByteSource(username));
+
+            info = saInfo;
+
+        } catch (SQLException e) {
+            final String message = "There was a SQL error while authenticating user [" + username + "]";
+            if (log.isErrorEnabled()) {
+                log.error(message, e);
+            }
+
+            // Rethrow any SQL errors as an authentication exception
+            throw new AuthenticationException(message, e);
+        } finally {
+            JdbcUtils.closeConnection(conn);
+        }
+
+        return info;
+    }
+
+    private String getPasswordForUser(Connection conn, String username) throws SQLException {
+
+        PreparedStatement ps = null;
+        ResultSet rs = null;
+        String password = null;
+        try {
+            ps = conn.prepareStatement(authenticationQuery);
+            ps.setString(1, username);
+
+            // Execute query
+            rs = ps.executeQuery();
+
+            // Loop over results - although we are only expecting one result, since usernames should be unique
+            boolean foundResult = false;
+            while (rs.next()) {
+
+                // Check to ensure only one row is processed
+                if (foundResult) {
+                    throw new AuthenticationException("More than one user row found for user [" + username + "]. Usernames must be unique.");
+                }
+
+                password = rs.getString(1);
+
+                foundResult = true;
+            }
+        } finally {
+            JdbcUtils.closeResultSet(rs);
+            JdbcUtils.closeStatement(ps);
+        }
+
+        return password;
+    }
+
+}

Modified: shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LoginController.java
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LoginController.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LoginController.java (original)
+++ shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LoginController.java Fri Dec 10 00:14:22 2010
@@ -21,7 +21,6 @@ package org.apache.shiro.samples.spring.
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.subject.Subject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.validation.BindException;
@@ -44,12 +43,10 @@ public class LoginController extends Sim
 
         LoginCommand command = (LoginCommand) cmd;
 
-        Subject subject = SecurityUtils.getSubject();
-
         UsernamePasswordToken token = new UsernamePasswordToken(command.getUsername(), command.getPassword());
 
         try {
-            subject.login(token);
+            SecurityUtils.getSubject().login(token);
         } catch (AuthenticationException e) {
             log.debug("Error authenticating.", e);
             errors.reject("error.invalidLogin", "The username or password was not correct.");

Modified: shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java (original)
+++ shiro/trunk/samples/spring/src/main/java/org/apache/shiro/samples/spring/web/LogoutController.java Fri Dec 10 00:14:22 2010
@@ -18,15 +18,12 @@
  */
 package org.apache.shiro.samples.spring.web;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
+import org.apache.shiro.SecurityUtils;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.mvc.AbstractController;
 
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.subject.Subject;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * Controller responsible for logging out the current user by invoking
@@ -37,16 +34,7 @@ import org.apache.shiro.subject.Subject;
 public class LogoutController extends AbstractController {
 
     protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
-        Subject subject = SecurityUtils.getSubject();
-        if (subject != null) {
-            subject.logout();
-        }
-
-        HttpSession session = request.getSession(false);
-        if( session != null ) {
-            session.invalidate();
-        }        
-
+        SecurityUtils.getSubject().logout();
         return new ModelAndView("redirect:login");
     }
 }
\ No newline at end of file

Modified: shiro/trunk/samples/spring/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/webapp/WEB-INF/applicationContext.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ shiro/trunk/samples/spring/src/main/webapp/WEB-INF/applicationContext.xml Fri Dec 10 00:14:22 2010
@@ -19,10 +19,8 @@
   -->
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="
-       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
     <!-- Sample RDBMS data source that would exist in any application - not Shiro related. -->
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
@@ -65,17 +63,16 @@
     <!-- Used by the SecurityManager to access security data (users, roles, etc).
          Many other realm implementations can be used too (PropertiesRealm,
          LdapRealm, etc. -->
-    <bean id="jdbcRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
+    <bean id="jdbcRealm" class="org.apache.shiro.samples.spring.realm.SaltAwareJdbcRealm">
         <property name="name" value="jdbcRealm"/>
         <property name="dataSource" ref="dataSource"/>
         <property name="credentialsMatcher">
             <!-- The 'bootstrapDataPopulator' Sha256 hashes the password
                  (using the username as the salt) then base64 encodes it: -->
-            <bean class="org.apache.shiro.authc.credential.Sha256CredentialsMatcher">
+            <bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
+                <property name="hashAlgorithmName" value="SHA-256"/>
                 <!-- true means hex encoded, false means base64 encoded -->
                 <property name="storedCredentialsHexEncoded" value="false"/>
-                <!-- We salt the password using the username, the most common practice: -->
-                <property name="hashSalted" value="true"/>
             </bean>
         </property>
     </bean>
@@ -125,8 +122,14 @@
         </property> -->
         <property name="filterChainDefinitions">
             <value>
-                /s/index = authc
-                /s/shiro.jnlp = authc, user
+                /favicon.ico = anon
+                /logo.png = anon
+                /shiro.css = anon
+                /s/login = anon
+                # allow WebStart to pull the jars for the swing app:
+                /*.jar = anon
+                # everything else requires authentication:
+                /** = authc
             </value>
         </property>
     </bean>

Modified: shiro/trunk/samples/spring/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/webapp/WEB-INF/web.xml?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/webapp/WEB-INF/web.xml (original)
+++ shiro/trunk/samples/spring/src/main/webapp/WEB-INF/web.xml Fri Dec 10 00:14:22 2010
@@ -28,9 +28,7 @@
          ================================================================== -->
     <context-param>
         <param-name>contextConfigLocation</param-name>
-        <param-value>
-            /WEB-INF/applicationContext.xml
-        </param-value>
+        <param-value>/WEB-INF/applicationContext.xml</param-value>
     </context-param>
 
     <!--
@@ -59,18 +57,17 @@
     <filter>
         <filter-name>shiroFilter</filter-name>
         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
+        <init-param>
+            <param-name>targetFilterLifecycle</param-name>
+            <param-value>true</param-value>
+        </init-param>
     </filter>
 
     <filter-mapping>
         <filter-name>shiroFilter</filter-name>
-        <url-pattern>/s/*</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>shiroFilter</filter-name>
-        <url-pattern>/remoting/*</url-pattern>
+        <url-pattern>/*</url-pattern>
     </filter-mapping>
 
-
     <!-- ==================================================================
          Servlets
          ================================================================== -->

Modified: shiro/trunk/samples/spring/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/shiro/trunk/samples/spring/src/main/webapp/index.jsp?rev=1044181&r1=1044180&r2=1044181&view=diff
==============================================================================
--- shiro/trunk/samples/spring/src/main/webapp/index.jsp (original)
+++ shiro/trunk/samples/spring/src/main/webapp/index.jsp Fri Dec 10 00:14:22 2010
@@ -16,8 +16,8 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   --%>
+<%@ page session="false" %>
 <%@ include file="/WEB-INF/resources/include.jsp" %>
-
 <html>
 <head>
     <meta http-equiv="Refresh" content="0; url=<c:url value="/s/login"/>">