123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <html>
- <head>
- <title>Acegi Security - Upgrading from version 0.3 to 0.4</title>
- </head>
- <body>
- <h1>Upgrading from 0.5 to 0.6</h1>
- <p>
- The following should help most casual users of the project update their
- applications:
- <ul>
- <li>
- Locate and remove all property references to
- DaoAuthenticationProvider.key and
- DaoAuthenticationProvider.refreshTokenInterval.</li>
- <li>If you are using DaoAuthenticationProvider and either (i) you are using
- container adapters or (ii) your code relies on the Authentication object
- having its getPrincipal() return a String, you must set the new
- DaoAuthenticationProvider property, forcePrincipalAsString, to true.
- By default DaoAuthenticationProvider returns an Authentication object
- containing the relevant User, which allows access to additional properties.
- Where possible, we recommend you change your code to something like this,
- so that you can leave forcePrincipalAsString to the false default:<br><br>
- <code>
- String username = authentication.getPrincipal();<br>
- if (authentication.getPrincipal() instanceof User) {<br>
- username = ((User) authentication.getPrincipal()).getUsername();<br>
- }</br>
- </code><br>
- </li>
- <li>The signature of AuthenticationDaos have changed. In concrete
- implementations, modify the User to UserDetails, as shown below:<br><br>
- <code>
- public User loadUserByUsername(String username)<br>
- throws UsernameNotFoundException, DataAccessException {<br><br>
- to:<br><br>
-
- public UserDetails loadUserByUsername(String username)<br>
- throws UsernameNotFoundException, DataAccessException {<br><br>
- </code>
- Existing concrete implementations would be returning User, which implements
- UserDetails, so no further code changes should be required.
- </li>
- <li>Similar signature changes (User -> UserDetails) are also required to any
- custom implementations of UserCache and SaltSource.</li>
- <li>Any custom event listeners relying on AuthenticationEvent should note a
- UserDetails is now provided in the AuthenticationEvent (not a User).</li>
- <li>CAS users should note the CasAuthoritiesPopulator interface signature has
- changed. Most CAS users will be using DaoCasAuthoritiesPopulator, so this
- change is unlikely to require any action.</li>
- <li>Please check your web.xml for whether you are using AutoIntegrationFilter.
- Previously this class was loaded directly by web.xml as a filter. It is
- now recommended to load it via FilterToBeanProxy and define it as a
- bean in your application context. This usually involves making the entry
- in web.xml match the following:<br><br>
- <code>
- <filter><br>
- <filter-name>Acegi Security System for Spring Auto Integration Filter</filter-name><br>
- <filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class><br>
- <init-param><br>
- <param-name>targetClass</param-name><br>
- <param-value>net.sf.acegisecurity.ui.AutoIntegrationFilter</param-value><br>
- </init-param><br>
- </filter><br>
- </code>
- <br><br>
- Then add the following to applicationContext.xml: <br><br>
- <code>
- <bean id="autoIntegrationFilter" class="net.sf.acegisecurity.ui.AutoIntegrationFilter"/><br>
- </code>
- </li>
- </ul>
- </body>
- </html>
|