Shiro实现登录拦截与用户认证

本文介绍了如何使用Shiro实现登录拦截和用户认证。首先,通过编写Shiro配置类和UserRealm类,设置登录拦截,当用户无权限时会跳转到登录页面。其次,详细讲解了UserRealm类的配置,以及controller接口和登录页面的修改,确保在正确输入用户名和密码后,用户能访问受限页面并具备特定权限。
摘要由CSDN通过智能技术生成

1、Shiro实现登录拦截

实现步骤:

  1. 编写Shiro配置类 UserRealm类同上

    package com.gjy.config;
    
    import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
    import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    @Configuration
    public class ShiroConfig {
         
        //ShiroFilterFactoryBean  3
        @Bean
        public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager securityManager) {
         
            ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
            //设置安全管理器
            bean.setSecurityManager(securityManager);
    
            //添加shiro的内置过滤器
            /*
               anon:无需认证就可以访问
               authc:必须认证才能访问
               user:必须拥有记住我功能才能用
               perms:拥有对某个资源的权限才能访问
               role:拥有对某个角色的权限才能访问
             */
            Map<String, String> filterMap = new LinkedHashMap<>();
            filterMap.put("/user/add", "authc");
            filterMap.put("/user/update", "authc");
    
            bean.setFilterChainDefinitionMap(filterMap);
            bean.setLoginUrl("/toLogin");//设置登录请求
            return bean;
        }
    
        //DefaultWebSecurityManager  2
        @Bean(name = "securityManager")
        public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm) {
         
            DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
            //关联userRealm
            securityManager.setRealm(userRealm);
            return securityManager;
        }
    
        //创建realm对象    1
        @Bean(name = "userRealm")
        public UserRealm userRealm() {
         
            return new UserRealm();
        }
    }
    
  2. 新建一个login.html作为拦截后跳转的登录页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值