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