SpringBoot整合shiro的基本使用

1、编写一个新的认证对象继承自AuthenticationToken,当然也可以直接使用AuthenticationToken

package com.mochenli.eternalstar.shiro.token;
import com.mochenli.eternalstar.common.util.TokenUtil;
import org.apache.shiro.authc.AuthenticationToken;

/**
 * @author: MoChenLi
 * @description:
 * @createTime: 2024-06-08 12:04
 */
public class JwtToken implements AuthenticationToken {
   
   //实现shiro默认的token认证类

    private String username;
    private String token;

    public JwtToken(String token) {
   
   
        this.token = token;
        this.username = TokenUtil.analysisTokenByUserName(token);
    }
    public JwtToken(){
   
   

    }
    public String getToken() {
   
   
        return token;
    }

    public void setToken(String token) {
   
   
        this.token = token;
    }

    public String getUsername() {
   
   
        return username;
    }

    public void setUsername(String username) {
   
   
        this.username = username;
    }

    @Override
    public Object getPrincipal() {
   
   
        return username;
    }

    @Override
    public Object getCredentials() {
   
   
        return token;
    }
}

2、编写一个过滤器JwtFliter继承自AuthenticatingFilter

package com.mochenli.eternalstar.shiro.filter;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.mochenli.eternalstar.common.enums.ExceptionCode;
import com.mochenli.eternalstar.common.exception.BaseException;
import com.mochenli.eternalstar.common.util.ApiResponse;
import com.mochenli.eternalstar.common.util.CookiesUtil;
import com.mochenli.eternalstar.common.util.TokenUtil;
import com.mochenli.eternalstar.shiro.token.JwtToken;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authc.AuthenticatingFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author: MoChenLi
 * @description
 * @createTime: 2024-06-08 13:11
 */
@EqualsAndHashCode(callSuper = true)
@Slf4j
@AllArgsConstructor
@NoArgsConstructor
@Data
public class JwtFilter extends AuthenticatingFilter {
   
   

    private String token;
    private boolean enabledTest;

    /**
     * order 1
     * 判断允许进行访问   如果为true就直接跳过其他方法 所以一般设置为false直接进入下一步验证onAccessDenied
     *
     * @param request
     * @param response
     * @param mappedValue
     * @return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨辰李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值