继上一篇环境搭建​​环境​

登录拦截功能

@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连接会直接跳到登录页