亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - 關于shiro在spring boot下自動登錄的問題?

瀏覽:88日期:2023-12-26 16:39:40

問題描述

我想實現shiro rememberMe之后,再次訪問后自動登錄并把一些用戶信息再存入session

我現在是按照http://blog.csdn.net/Q_AN1314...這篇文章,寫了一個過濾器,但是在過濾器里獲取subject時出現錯誤

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.

這是過濾器

public class AddPrincipalToSessionFilter extends OncePerRequestFilter { @Resource private ManagerService managerService; @Override protected void doFilterInternal(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {Subject subject = SecurityUtils.getSubject();if (subject.isRemembered()) { String principal = (String) subject.getPrincipal(); Manager manager = managerService.queryManager(principal); //將用戶信息存入session ContextHelper.saveLoginUserInfoToSeesion(manager);}filterChain.doFilter(servletRequest, servletResponse); }}

這是shiroFilter

@Bean @Autowired public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();// 必須設置 SecurityManagershiroFilterFactoryBean.setSecurityManager(securityManager);Map<String, Filter> filters = shiroFilterFactoryBean.getFilters();//獲取filtersfilters.put('authc', new CustomFormAuthenticationFilter());//驗證碼過濾器filters.put('addPrincipal', addPrincipalToSessionFilter());//rememberMe存session過濾器//攔截器.Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();//配置退出過濾器,其中的具體的退出代碼Shiro已經替我們實現了filterChainDefinitionMap.put('/logout', 'logout');filterChainDefinitionMap.put('/favicon.ico', 'anon');filterChainDefinitionMap.put('/js/**', 'anon');filterChainDefinitionMap.put('/css/**', 'anon');filterChainDefinitionMap.put('/img/**', 'anon');filterChainDefinitionMap.put('/fonts/**', 'anon');filterChainDefinitionMap.put('/icons/**', 'anon');filterChainDefinitionMap.put('/error/**', 'anon');filterChainDefinitionMap.put('/validateCode', 'anon');//配置記住我或認證通過可以訪問的地址filterChainDefinitionMap.put('/', 'addPrincipal,user');filterChainDefinitionMap.put('/index', 'addPrincipal,user');filterChainDefinitionMap.put('/index.html', 'addPrincipal,user');//<!-- 過濾鏈定義,從上向下順序執行,一般將 /**放在最為下邊//<!-- authc:所有url都必須認證通過才可以訪問; anon:所有url都都可以匿名訪問-->filterChainDefinitionMap.put('/**', 'authc');shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);// 如果不設置默認會自動尋找Web工程根目錄下的'/login.jsp'頁面shiroFilterFactoryBean.setLoginUrl('/login.html');// 登錄成功后要跳轉的鏈接shiroFilterFactoryBean.setSuccessUrl('/index.html');// 未授權要跳轉的鏈接shiroFilterFactoryBean.setUnauthorizedUrl('/error/403');return shiroFilterFactoryBean; }}

請問一下大家這是怎么回事?或者大家有什么更好的實現方法請指教一下

問題解答

回答1:

已解決 1.這個bean的注入一定要在shiroFilter下面

@Beanpublic AddPrincipalToSessionFilter addPrincipalToSessionFilter(){ return new AddPrincipalToSessionFilter();}

2.user要寫在addPrincipal前面 filterChainDefinitionMap.put('/', 'user,addPrincipal');

標簽: java
相關文章:
主站蜘蛛池模板: 亚洲精品高清国产一线久久97 | 色天天天综合色天天碰 | 91啪在线观看国产在线 | 日本黄色免费网址 | 精品国产高清a毛片 | 自拍在线观看 | 人人干人人玩 | 色图视频 | 国产女主播一区二区在线观看 | 狠狠色综合久久丁香婷婷 | 操美女国产 | 黑人性视频做爰全过程视频 | 亚洲高清美女一区二区三区 | 久久人人插 | 亚洲巨乳自拍在线视频 | 皇色在线视频 | 日本一级大黄毛片一级 | 免费观看一级特黄欧美大片 | 男女免费爽爽爽在线视频 | 欧美区一区二区三 | 成人免费国产欧美日韩你懂的 | 热re99久久国产精品 | 国产一级一级一级成人毛片 | 国产成+人+亚洲+欧美综合 | 亚洲欧美精选 | 亚洲欧美日韩一区二区在线观看 | 国产 麻豆 欧美亚洲综合久久 | 亚洲国产精品一区二区第四页 | 国产丝袜制服 | 美美女高清毛片视频黄的一免费 | 国产免费一区二区三区在线观看 | 日韩欧美黄色 | 国产小视频免费 | 国产亚洲美女精品久久久 | 国产在线观看自拍 | 高清精品一区二区三区一区 | 美女牲交毛片一级视频 | 欧美亚洲色图视频 | 黄色一级片在线免费观看 | 日韩中文字幕精品一区在线 | 一本一本大道香蕉久在线精品 |