class="org.springframework.cache.ehcache.EhCacheFactoryBean">
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
value="classpath:ehcache-security.xml" />
class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
ref="authenticationManager" />
ref="accessDecisionManager" />
ref="databaseFilterInvocationDefinitionSource" />
class="org.springframework.security.vote.AffirmativeBased">
class="org.springframework.security.vote.RoleVoter">
class="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices"
p:key="springsecurity"
p:userDetailsService-ref="userDetailsService"/>
class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
class="org.springframework.security.providers.openid.OpenIDAuthenticationProvider">
class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/>
class="org.openjweb.core.springsecurity.UserDetailsServiceImpl">
class="org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource">
type="org.springframework.security.util.UrlMatcher"
ref="antUrlPathMatcher" />
class="org.springframework.security.util.AntUrlPathMatcher" />
class="org.openjweb.core.springsecurity.RequestMapFactoryBean"
init-method="init">
class="org.springframework.security.event.authentication.LoggerListener"/>
注意配置文件中的这段代码:
class="org.openjweb.core.springsecurity.UserDetailsServiceImpl">
org.openjweb.core.springsecurity.UserDetailsServiceImpl是OpenJWeb中实现Spring Security 的UserDetailsService接口的实现类。我们 此实现类中增加一段代码,此段代码获取openID认证以后的OpenID账号,检查数据库表comm_user中是否存在此账号,如果不存在,则认证成功后自动向数据库表添加一条账号记录,并且为此账号分配一个网站会员角色。下面是org.openjweb.core.springsecurity.UserDetailsServiceImpl的代码:
package org.openjweb.core.springsecurity;
import org.apache.log4j.Logger;
import org.openjweb.core.dao.IBaseDao;
import org.openjweb.core.entity.CommUser;
import org.openjweb.core.entity.CommUserRole;
import org.openjweb.core.service.IDBSupportService;
import org.openjweb.core.service.ServiceLocator;
import org.openjweb.core.util.StringUtil;
import org.springframework.dao.DataAccessException;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UsernameNotFoundException;
public class UserDetailsServiceImpl implements IUserService
{
private static final Logger logger = Logger.getLogger(UserDetailsServiceImpl.class);
private IBaseDao defaultDao;
public UserDetailsServiceImpl (IBaseDao dao)
{
this.defaultDao = dao;
}
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException
{
CommUser user = null;
try
{
user = (CommUser)this.defaultDao.findById(CommUser.class.getName(), "loginId", userName);
if(user.getIsInUse()!=null&&user.getIsInUse().equals("Y"))
{
}
else
{
logger.info("用户被锁定......");
throw new UsernameNotFoundException(userName); //被锁定
}
}
catch(Excep