shiro自定义登陆和推出的过滤器,实现登陆之后根据条件跳转不同页面,推出登陆根据条件跳转不同页面

本文介绍了如何在Shiro框架中通过自定义过滤器来实现登录后根据条件跳转不同页面以及退出登录时依据条件跳转不同页面的操作。配置中,'login' 被设为登录链接,而 'authc' 权限过滤器用于处理登录请求。注销过滤器则处理退出登录的请求。通过这样的方式,开发者可以灵活地扩展Shiro的功能。

shiro中我们可以通过自定义过滤器的方式来实现自己想要的结果,比如想要登陆之后跳转不同页面

@Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager,
            AuthenticationFilter authenticationFilter) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();

        shiroFilterFactoryBean.setSecurityManager(securityManager);

        shiroFilterFactoryBean.setSuccessUrl("/");
        shiroFilterFactoryBean.setLoginUrl("/login");
        shiroFilterFactoryBean.setUnauthorizedUrl("/login");
        filterChainDefinitionMap.put("/login", "authc");
        filterChainDefinitionMap.put("/logout", "logout");
        filterChainDefinitionMap.put("/", "authc");

        Map<String, Filter> filtersMap = new LinkedHashMap<String, Filter>();
        filtersMap.put ("authc",new LoginFormAuthenticationFilter());//自定义登陆的过滤器
        filtersMap.put ("logout",new LogoutFormAuthenticationFilter());//自定义退出的过滤器
        shiroFilterFactoryBean.setFilters (filtersMap);

        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);


        return shiroFilterFactoryBean;
    }</
在使用Shiro进行权限管理时,通常会在前端后端进行一些配置来确保用户权限的正确处理。关于你提到的配置Shiro过滤器以及通过前端路由导航守卫进行页面跳转的问题,以下是一些建议: 1. **前端配置**:在前端,你已经使用了路由导航守卫进行页面跳转。这通常用于控制用户在不同页面之间的访问权限。例如,未登录用户无法访问需要登录页面。 2. **后端配置**:在后端,Shiro过滤器主要用于处理请求的权限验证登录逻辑。为了确保用户登录后能够正确跳转到预期的页面,你需要在后端配置登录跳转的URL。 3. **登录跳转**:在Shiro的配置中,你可以设置一个默认的登录跳转URL。例如,当用户访问一个需要登录页面时,Shiro会拦截请求并重定向到登录页面登录成功后,Shiro会自动将用户重定向回之前请求的页面。 以下是一个简单的Shiro配置示例: ```java 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.LinkedHashMap; import java.util.Map; @Configuration public class ShiroConfig { @Bean public ShiroFilterFactoryBean shirFilter(org.apache.shiro.mgt.SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); shiroFilter.setSecurityManager(securityManager); // 登录页面 shiroFilter.setLoginUrl("/login"); // 登录成功后跳转的URL shiroFilter.setSuccessUrl("/index"); // 未授权页面 shiroFilter.setUnauthorizedUrl("/403"); // 配置过滤器 Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>(); filterChainDefinitionMap.put("/login", "anon"); filterChainDefinitionMap.put("/logout", "logout"); filterChainDefinitionMap.put("/**", "authc"); shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilter; } @Bean public org.apache.shiro.mgt.SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); // 配置Realm securityManager.setRealm(myRealm()); return securityManager; } @Bean public MyRealm myRealm() { return new MyRealm(); } } ``` 在这个配置中,`setSuccessUrl`方法设置了登录成功后跳转的URL。如果你需要根据用户之前请求的页面进行跳转,可以使用`setLoginUrl`方法,并在登录成功后手动重定向。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值