13-shiro整合springboot实现项目中的认证和退出

(1)编写controller

package com.study.springboot_jsp_shiro.controller;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * 用来处理身份认证过
     * @param username
     * @param password
     * @return
     */
    @RequestMapping("/login")
    public String login(String username, String password){
        /*
        注意,我们以前不在web环境中时,需要给安全工具类注入安全管理器
        但是在web环境中,只要我们创建了安全管理器,就会自动给我们的安全工具类注入我们的安全管理器,所以这里不需要再给我们的安全工具类注入我们的安全管理器了
         */
        //获取主体对象
        Subject subject = SecurityUtils.getSubject();

        try {
            subject.login(new UsernamePasswordToken(username, password));

            return "redirect:/index.jsp";
        }catch (UnknownAccountException e){
            e.printStackTrace();
            System.out.println("用户名错误");
        }catch (IncorrectCredentialsException e){
            e.printStackTrace();
            System.out.println("密码错误");
        }

        return "redirect:/login.jsp";
    }
}

(2)编写我们的登录页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <!--公共资源-->
    <h1>用户登录</h1>

    <form action="${pageContext.request.contextPath}/user/login" method="post">
        用户名:<input type="text" name="username"> <br>
        密码:<input type="password" name="password"> <br>
        <input type="submit" value="登录"> <br>
    </form>
</body>
</html>

(3)测试
发现我们登录的时候,会走我们的自定义的realm,由于我们自定义realm返回的是null,所以不会登录成功,只会报错:用户名错误。

(4)编写我们的自定义realm(未连接数据库)

这样就可以正确登录了

(5)退出登录设置。
编写主页

编辑controller

/
/
/
/
/
/
(6)一般,我们的所有资源都要进行认证才可以,所以我们修改我们的配置类代码
注意设置一些不受限的资源,并且要把代码放在受限资源的上方,比如我们的登录页面就是不受限资源,不然永远也登录不上去

posted @ 2021-11-22 15:03  不是孩子了  阅读(231)  评论(0)    收藏  举报