Shrio:自定义表单拦截器 FormAuthenticationFilter 登陆认证,并登陆后重定向原请求

设置拦截器 ShiroFilterFactoryBean

方法1. JAVA中设置
	public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
   
		ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
		// 必须设置 SecurityManager
		shiroFilterFactoryBean.setSecurityManager(securityManager);

		shiroFilterFactoryBean.setLoginUrl("/login");
		shiroFilterFactoryBean.setSuccessUrl("/index");
		shiroFilterFactoryBean.setUnauthorizedUrl("/403");

		// private Map<String, Filter> filters; shiro有一些默认的拦截器
		// 比如auth,它就是FormAuthenticationFilter表单拦截器 <取名,拦截器地址>,可以自定义拦截器放在这
		// private Map<String, String> filterChainDefinitionMap; <url,拦截器名>哪些路径会被此拦截器拦截到

		// 拦截器.
		Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
		// 配置不会被拦截的链接 顺序判断
		filterChainDefinitionMap.put("/static/**", "anon");
		filterChainDefinitionMap.put("/ajaxLogin", "anon");
		filterChainDefinitionMap.put("/项目的Namespace/userlogin", "anon");
		filterChainDefinitionMap.put("/swagger-ui.html#", "anon");

		// 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边
		// <!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问;user:remember me的可以访问-->
		filterChainDefinitionMap.put("/fine", "user");
		filterChainDefinitionMap.put("/项目的Namespace/**", "authc");
		shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
		System.out.println("Shiro拦截器工厂类注入成功");
		return shiroFilterFactoryBean;
	}
方法2. applicationContext.xml 中设置
<bean id="securityManager"
		class="com.key.common.plugs.security.MyDefaultWebSecurityManager">
		<property name="realm" ref="shiroDbRealm" />
		<property name="rememberMeManager" ref="rememberMeManager" />
	</bean>

	<bean id="formAuthFilter"
		class="com.key.common.plugs.security.FormAuthenticationWithLockFilter">
		<property name="maxLoginAttempts" value="100" />
		<property name="successAdminUrl" value="/main.action?menu=3" 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值