Notes shiro shiro no entry authority to verify the configuration on the path back to the login

-.我的shicofig类
package com.yb.base.config;

import com.yb.base.shiro.ShiroFormAuthenticationFilter;
import com.yb.base.shiro.ShiroRealm;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;

import javax.servlet.Filter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
* Created by mayn on 2019/7/24.
*/
@SpringBootConfiguration
public class ShiroConfig {
@Bean
public FilterRegistrationBean delegatingFilterProxy(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
DelegatingFilterProxy proxy = new DelegatingFilterProxy();
proxy.setTargetFilterLifecycle(true);
proxy.setTargetBeanName("shiroFilter");
filterRegistrationBean.setFilter(proxy);
return filterRegistrationBean;
}
@Bean(name="shiroFilter")
public Object getShiroFilter(){

ShiroFilterFactoryBean factoryBean=new ShiroFilterFactoryBean();
//1.指定Shiro的SecurityManager对象
factoryBean.setSecurityManager(this.getSecurityMAnager());
Map<String,Filter> filterMap =new HashMap<String,Filter>();
filterMap.put("authc",this.getFormAuthenticationFilter());
factoryBean.setFilters(filterMap);
//2.配置过滤链
Map<String, String> filterChain=new LinkedHashMap<>();
filterChain.put("/toLogin", "anon");
filterChain.put("/static/**", "anon");
filterChain.put("/register", "anon");
filterChain.put("/user/accountName", "anon");
filterChain.put("/user/register", "anon");
filterChain.put("/**", "user");
//设置登录路径
factoryBean.setLoginUrl("/user/loginUser");
//4.登录成功路径
factoryBean.setSuccessUrl("/toIndex");
factoryBean.setFilterChainDefinitionMap(filterChain);

try {
return factoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//会话管理
@Bean
public SecurityManager getSecurityMAnager(){
DefaultWebSecurityManager dwsm=new DefaultWebSecurityManager();
dwsm.setRealm(this.getShiroRealm());
return dwsm;
}
@Bean
public ShiroRealm getShiroRealm(){
ShiroRealm shiroRealm=new ShiroRealm();
HashedCredentialsMatcher credentialsMatcher =new HashedCredentialsMatcher();
//设置是md5算法
credentialsMatcher.setHashAlgorithmName("md5");
//加密三次
credentialsMatcher.setHashIterations(1);
shiroRealm.setCredentialsMatcher(credentialsMatcher);
return shiroRealm;
}
@Bean
public ShiroFormAuthenticationFilter getFormAuthenticationFilter() {
= New new ShiroFormAuthenticationFilter formAuthenticationFilter ShiroFormAuthenticationFilter ();
// a user specified parameter name name
formAuthenticationFilter.setUsernameParam ( "USER_ACCOUNT");
// specified parameter name password
formAuthenticationFilter.setPasswordParam ( "the user_pwd");
return formAuthenticationFilter;
}
}
two if the message. The following error

org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration.
at org.apache.shiro.SecurityUtils.getSecurityManager(SecurityUtils.java:123) ~[shiro-core-1.3.2.jar:1.3.2]
at org.apache.shiro.subject.Subject$Builder.<init>(Subject.java:627) ~[shiro-core-1.3.2.jar:1.3.2]
at org.apache.shiro.SecurityUtils.getSubject(SecurityUtils.java:56) ~[shiro-core-1.3.2.jar:1.3.2]
at org.apache.shiro.web.filter.AccessControlFilter.getSubject(AccessControlFilter.java:97) ~[shiro-web-1.3.2.jar:1.3.2]
orgapacheshirowebfilterauthcAuthenticationFilterisAccessAllowed at (AuthenticationFilterjava80) ~ [shiro-web.config files-132jar: 1.3.2]
at orgapacheshirowebfilter. authcAuthenticatingFilterisAccessAllowed (AuthenticatingFilterjava123) ~ [shiro-web.config files-132jar: 1.3.2]
at orgapacheshirowebfilterAccessControlFilteronPreHandle (AccessControlFilterjava162) ~ [shiro-web.config files-132jar: 1.3.2]
at orgapacheshirowebfilterPathMatchingFilterisFilterChainContinued (PathMatchingFilterjava203) ~ [shiro-web.config files-132jar: Over 1.3:. 2]
at orgapacheshirowebfilterPathMatchingFilterpreHandle (PathMatchingFilterjava178) ~ [shiro-web.config files-132jar: 1.3.2]
at orgapacheshirowebservlet. AdviceFilter.doFilterInternal (AdviceFilter.java:131) ~ [shiro- web-1.3.2.jar: 1.3.2]
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) ~[shiro-web-1.3.2.jar:1.3.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:63) ~[spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) [tomcat-embed-core-9.0.22.jar:9.0.22]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.22.jar:9.0.22]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.22.jar:9.0.22]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

 

You can add

 @Bean
public FilterRegistrationBean delegatingFilterProxy(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
DelegatingFilterProxy proxy = new DelegatingFilterProxy();
proxy.setTargetFilterLifecycle(true);
proxy.setTargetBeanName("shiroFilter");
filterRegistrationBean.setFilter(proxy);
return filterRegistrationBean;
}

There must be noted

You must login request paths to write, do not write the login page jump back to the path of

 



Guess you like

Origin www.cnblogs.com/bky-lxm/p/11362330.html