|
@@ -1,18 +1,15 @@
|
|
|
package com.qxgmat.util.shiro;
|
|
|
|
|
|
-import com.nuliji.tools.shiro.DevelopFilter;
|
|
|
-import com.nuliji.tools.shiro.DevelopRealm;
|
|
|
-import com.nuliji.tools.shiro.RealmAuthenticator;
|
|
|
-import com.nuliji.tools.shiro.RoleFilter;
|
|
|
+import com.nuliji.tools.shiro.*;
|
|
|
import com.nuliji.tools.shiro.cache.RedisManager;
|
|
|
import com.nuliji.tools.shiro.cache.CustomCacheManager;
|
|
|
import com.nuliji.tools.shiro.cache.RedisCacheProvider;
|
|
|
+import com.nuliji.tools.shiro.inter.HeaderTokenManager;
|
|
|
import com.nuliji.tools.shiro.session.CustomSessionDao;
|
|
|
import com.nuliji.tools.shiro.session.RedisSessionRepository;
|
|
|
import com.nuliji.tools.shiro.session.SessionRepository;
|
|
|
+import com.qxgmat.util.shiro.impl.UserTokenManager;
|
|
|
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
|
|
|
-import org.apache.shiro.authc.credential.PasswordMatcher;
|
|
|
-import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;
|
|
|
import org.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategy;
|
|
|
import org.apache.shiro.cache.CacheManager;
|
|
|
import org.apache.shiro.codec.Base64;
|
|
@@ -54,14 +51,15 @@ public class ShiroConfig {
|
|
|
DefaultShiroFilterChainDefinition chain = new DefaultShiroFilterChainDefinition();
|
|
|
chain.addPathDefinition("/admin/auth/**", "anon");
|
|
|
chain.addPathDefinition("/admin/**", "role[manager]");
|
|
|
- chain.addPathDefinition("/api/my/**", "role[user]");
|
|
|
- chain.addPathDefinition("/api/question/**", "role[user]");
|
|
|
+ chain.addPathDefinition("/api/auth/**", "anon");
|
|
|
+ chain.addPathDefinition("/api/my/**", "token,role[user]");
|
|
|
+ chain.addPathDefinition("/api/question/**", "token,role[user]");
|
|
|
|
|
|
chain.addPathDefinition("/**", "anon");
|
|
|
return chain;
|
|
|
}
|
|
|
|
|
|
- @Bean
|
|
|
+ @Bean(name = "shiroFilter")
|
|
|
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
|
|
|
|
|
|
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
|
|
@@ -71,8 +69,10 @@ public class ShiroConfig {
|
|
|
|
|
|
DevelopFilter developFilter = new DevelopFilter();
|
|
|
RoleFilter roleFilter = new RoleFilter();
|
|
|
+ TokenFilter tokenFilter = new TokenFilter(headerTokenManager());
|
|
|
filters.put("role", roleFilter);
|
|
|
filters.put("develop", developFilter);
|
|
|
+ filters.put("token", tokenFilter);
|
|
|
shiroFilterFactoryBean.setFilters(filters);
|
|
|
shiroFilterFactoryBean.setFilterChainDefinitionMap(shiroFilterChainDefinition().getFilterChainMap());
|
|
|
return shiroFilterFactoryBean;
|
|
@@ -122,18 +122,32 @@ public class ShiroConfig {
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
+ public HeaderTokenManager headerTokenManager() {
|
|
|
+ UserTokenManager userTokenManager = new UserTokenManager();
|
|
|
+ return userTokenManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
public UserRealm userRealm() {
|
|
|
UserRealm userRealm = new UserRealm();
|
|
|
// userRealm.setCredentialsMatcher(new SimpleCredentialsMatcher());
|
|
|
- userRealm.setCachingEnabled(false);
|
|
|
+ userRealm.setCachingEnabled(true);
|
|
|
return userRealm;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
+ public TokenRealm tokenRealm() {
|
|
|
+ TokenRealm tokenRealm = new TokenRealm();
|
|
|
+// userRealm.setCredentialsMatcher(new SimpleCredentialsMatcher());
|
|
|
+ tokenRealm.setCachingEnabled(true);
|
|
|
+ return tokenRealm;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
public ManagerRealm managerRealm() {
|
|
|
ManagerRealm managerRealm = new ManagerRealm();
|
|
|
// managerRealm.setCredentialsMatcher(new SimpleCredentialsMatcher());
|
|
|
- managerRealm.setCachingEnabled(false);
|
|
|
+ managerRealm.setCachingEnabled(true);
|
|
|
return managerRealm;
|
|
|
}
|
|
|
|
|
@@ -147,7 +161,7 @@ public class ShiroConfig {
|
|
|
@Bean
|
|
|
public DevelopRealm developRealm(){
|
|
|
DevelopRealm developRealm = new DevelopRealm();
|
|
|
- developRealm.setCachingEnabled(false);
|
|
|
+ developRealm.setCachingEnabled(true);
|
|
|
return developRealm;
|
|
|
}
|
|
|
|
|
@@ -155,6 +169,7 @@ public class ShiroConfig {
|
|
|
public Collection<Realm> realms() {
|
|
|
Collection<Realm> realms = new ArrayList<>();
|
|
|
realms.add(userRealm());
|
|
|
+ realms.add(tokenRealm());
|
|
|
realms.add(oauthRealm());
|
|
|
realms.add(managerRealm());
|
|
|
realms.add(developRealm());
|