自定义Realm
package com.baizhi.realm;
import com.baizhi.dao.UserDao;
import com.baizhi.entity.User;
import org.apache.shiro.authc.*;
import org.apache.shiro.realm.AuthenticatingRealm;
import org.springframework.beans.factory.annotation.Autowired;
public class AuthenRealm extends AuthenticatingRealm {
@Autowired
private UserDao userDao;
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken)token;
String username = usernamePasswordToken.getUsername();
User user = userDao.selectOne(username);
if (user != null) {
return new SimpleAuthenticationInfo(user.getUsername(),user.getPassword(),this.getName());
}
return null;
}
}
Shiro的配置类
package com.baizhi.config;
import com.baizhi.realm.AuthenRealm;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager){
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
Map map = new HashMap();
map.put("/login.jsp","anon");
map.put("/main/*","authc");
factoryBean.setFilterChainDefinitionMap(map);
factoryBean.setSecurityManager(securityManager);
return factoryBean;
}
@Bean
public DefaultWebSecurityManager defaultWebSecurityManager(AuthenRealm authenRealm){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(authenRealm);
return securityManager;
}
@Bean
public AuthenRealm getAuthenRealm(){
return new AuthenRealm();
}
}