Loading

Shiro登录拦截

继上一篇环境搭建环境

登录拦截功能


@Configuration
public class ShiroConfig {

    //ShiroFilterFactoryBean 过滤对象
    @Bean
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager){
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        //设置安全管理器
        bean.setSecurityManager(defaultWebSecurityManager);
        //添加shiro的内置过滤器

        /*
            anon: 无序认证就可以访问
            authc:必须认证了才能访问
            user: 必须拥有 记住我 功能才让使用
            perms: 拥有对某个资源的权限才能访问
            role: 拥有某个角色权限才能访问
         */

        //拦截主要代码
        Map<String,String> filterMap = new LinkedHashMap<>();
//        filterMap.put("/user/add","authc");
//        filterMap.put("/user/update","authc");
        filterMap.put("/user/*","authc");


        bean.setFilterChainDefinitionMap(filterMap);

        //设置未登录的请求
        bean.setLoginUrl("/toLogin");
        return bean;
    }

被拦截一般需要回到登录页

在templates包下新建一个login.html


<p th:text="${msg}" style="color: crimson"></p>
<form th:action="@{/login}">
    <p>用户:<input type="text" name="username"></p>
    <p>密码:<input type="text" name="password"></p>
    <p><input type="submit"></p>
</form>

编写controller跳转到登录代码


    @RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }

测试

点击add连接会直接跳到登录页

posted @ 2020-05-29 23:21  Rzk  阅读(567)  评论(0编辑  收藏  举报