账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    shiro自定义过滤器对restful风格实现拦截的问题
    43
    0

    前提

    现在做一个前后端分离的应用,后台用shiro做权限控制,用jwt代替session的无状态web应用,自定义了一个shiro filter.url用restful风格.所有的接口url都以/api开头,我想让所有这种/api开头的url,如果需要认证就走我自定义的filter.

    问题

    现在我有四个rul:

    1. /api/user/1 --GET
    2. /api/user --POST
    3. /api/user --PATCH
    4. /api/user --PUT

    我现在仅仅想对POST方法做权限控制,让他走我自定义的那个filter,shiro不知道如何控制.

    我的自定义filter在shiro.xml中的配置如下:

    <bean id="JWTFilter" class="com.test.web.shiro.stateless.JWTStatelessFilter"/>
    
    <!-- Shiro的Web过滤器 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="filters">
            <util:map>
                <entry key="jwt" value-ref="JWTFilter"/>
            </util:map>
        </property>
        <property name="filterChainDefinitions">
            <value>
                /api/**=jwt
                /**=anon
            </value>
        </property>
    </bean>

    我刚开始想过不配置/api/**=jwt,然后在方法上加@RequiresAuthentication注解,但是这样子,那个方法不走我的JWTFilter,如何让这个需要认证的url走我的自定义filter,该如何配置,求解.谢谢.

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部