其他分享
首页 > 其他分享> > shiro登录之后后端需要权限的接口仍显示无权限问题

shiro登录之后后端需要权限的接口仍显示无权限问题

作者:互联网

报错 The current Subject is not authenticated. Access denied.

后端接口如下

	@RequiresAuthentication
    @GetMapping("/getUserInfo")
    public Object logout() {
        Long id = ShiroUtil.getProfile().getId();
        return Result.succ(id);
    }

前端请求

this.$axios.get("getUserInfo").then((res) => {
      console.log("=======================");
      console.log(res)
      console.log("=======================");
    })

注意:解决方法!!!!

可能是因为前端发送请求没有携带token

改为如下请求方式,Authorization的值是之前登录接口存到localstorage的数据

this.$axios.get("getUserInfo", {
      headers: {
        Authorization: localStorage.getItem("token"),
      },
    }).then((res) => {
      console.log("=======================");
      console.log(res)
      console.log("=======================");
    })

完美解决问题

如果后端接口用@RequiresPermissions

@RequiresPermissions("update")
    @GetMapping("/getUserInfo")
    public Object logout() {
        Long id = ShiroUtil.getProfile().getId();
        return Result.succ(id);
    }

报错如下

This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against.  A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager.  This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again.  Because an identity is currently not known due to any of these conditions, authorization is denied.

此种情况可能也是前端没有携带token

如有问题可以留言交流

标签:getUserInfo,console,log,res,接口,权限,id,shiro,Subject
来源: https://www.cnblogs.com/raspberry--PI/p/16462548.html