springboot整合shiro

1、环境搭建

1、新建一个springboot项目,勾选Spring Web和Thymeleaf依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

2、测试环境是否正常

  1. 新建一个controller页面
@Controller
public class MyController {

    @RequestMapping({"/","/index"})
    public String toIndex(Model model){
        model.addAttribute("msg","hello,Shiro!");
        return "index";
    }
    @RequestMapping("/user/add")
    public String add(){
        return "user/add";
    }
    @RequestMapping("/user/update")
    public String update(){
        return "user/update";
    }
}
  1. 新建一个index.html页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>

<h1>首页</h1>
<p th:text="${msg}"></p>
<hr>

<a th:href="@{/user/add}">add</a>  | <a th:href="@{/user/update}">update</a>

</body>
</html>
  1. 新建一个add.html页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>add</h1>

</body>
</html>
  1. 新建一个update.html页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>update</h1>

</body>
</html>

运行截图
springboot整合shiro

2、Shiro实现登录拦截

  • 在ShiroConfig中的getShiroFilterFactoryBean方法中添加如下配置:
//添加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);
    • 再点击首页的add或者update之后,
      springboot整合shiro
      这是拦截之后的系统默认页面,我们要把这个页面显示一些内容
    • 添加拦截成功页面
      • 登录页面login.html
  • 拦截成功页面
    springboot整合shiro

3、Shiro实现用户认证

    1. 在MyController中编写用户提交表单之后处理
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<h1>登录</h1>
<hr>

<form action="">
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="text" name="password"></p>
    <p>密码:<input type="submit"></p>
</form>
</body>
</html>
上一篇:shiro


下一篇:Shiro的基本使用