networksu 2019-05-25 01:52 采纳率: 0%
浏览 7449

springboot+Shiro 发送请求获取subject后getPrincipal就为null了?

1,我先要确定是我配置shiro有问题,还是和我的tomcat有关系?

@RequestMapping("login")
    public Object Login(@RequestParam String username,@RequestParam String password) {
            Map<String, Object> result = new HashMap<>();
            result.put("code", "200");
            result.put("msg", "登录成功");
            Subject subject = SecurityUtils.getSubject();
            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password, true);
            try {
                subject.login(usernamePasswordToken);
                UserList user = (UserList) subject.getPrincipal();

刚认证完的时候没有问题,当第二前端发送来请求的时候

@RequestMapping(value="CooperationCompany",method=RequestMethod.POST)
    public Object PostCooperationCompany(@RequestBody V_Project_CooperationCompany vpj)  {
        Map<String, Object> result = new HashMap<>();
        Subject subject = SecurityUtils.getSubject();
        UserList u=(UserList)subject.getPrincipal();

此时的u为null。之前一直好着呢,也不知道怎么就不行了,按照网上的折腾了一顿还是不行,下面是配置文件

@Configuration
public class ShiroConfiguration {
@Bean
    public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator(){
        DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator=new DefaultAdvisorAutoProxyCreator();
        defaultAdvisorAutoProxyCreator.setUsePrefix(true);
        return defaultAdvisorAutoProxyCreator;
    }

    @Bean
    public Md5Realm myShiroRealm() {
        Md5Realm myShiroRealm = new Md5Realm();
        return myShiroRealm;
    }

    @Bean
    public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myShiroRealm());
        return securityManager;
    }

    @Bean
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        return shiroFilterFactoryBean;
    }

    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
        return authorizationAttributeSourceAdvisor;
    }
}

不知道跟容器是否有关系,这个怎么解决。

  • 写回答

3条回答

  • networksu 2019-05-27 15:36
    关注

    最后自己解决了前端VUE里面axios没有带sessionid,
    在main.js里面
    axios.defaults.withCredentials = true

    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择