ant-design / ant-design-pro

👨🏻‍💻👩🏻‍💻 Use Ant Design like a Pro!
https://pro.ant.design
MIT License
36.47k stars 8.14k forks source link

🧐[问题] springboot + shiro + antdpro,当shiro开启登录拦截后,请问 #9290

Closed ai180508 closed 2 years ago

ai180508 commented 2 years ago

🧐 问题描述

按照官方文档将antdpro bulid后放在了start/src/main/resoutces/static下,在Shiro开启登录拦截后,Shiro中的setLoginUrl请问改如何设置呢。

示例代码

antdpro中config.js: history: { type: 'hash', },

routes,js export default [ { path: '/', component: '../layouts/BlankLayout', routes: [ { path: '/user', component: '../layouts/UserLayout', routes: [ { name: 'login', path: '/user/login', component: './User/login', }, ], }, ] } ]

java中ShiroFilterFactoryBean.java: @Bean public ShiroFilterFactoryBean factory(SecurityManager securityManager) { ShiroFilterFactoryBean factoryBean=new ShiroFilterFactoryBean(); factoryBean.setSecurityManager(securityManager); //登录认证不通过跳转的url factoryBean.setLoginUrl("/#/user/login"); //功能权限不足跳转URL factoryBean.setUnauthorizedUrl("/user/unAuthError");

    Map<String,String> map=new LinkedHashMap<>();
    map.put("**/login","anon");//登录放行
    map.put("/auth/account/userInfo","anon"); //当前登录用户信息
    map.put("/auth/logOut","anon"); //退出登录
    //swagger api管理
    map.put("/swagger*/**","anon");
    map.put("/swagger-ui.html","anon");
    map.put("/index.html","anon");
    //登录拦截器
    map.put("/**","authc");

    shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
    return shiroFilterFactoryBean;
}

其他信息(网络不好,图片无法上传)

factoryBean.setLoginUrl("/#/user/login"); 时页面报错

image

factoryBean.setLoginUrl("/user/login"); 时页面报错:

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Thu Nov 11 18:18:13 CST 2021 There was an unexpected error (type=Not Found, status=404). No message available

不配置会跳转到 login.jsp

chenshuai2144 commented 2 years ago

你这个用 hash 路由可能不好搞了, https://umijs.org/zh-CN/config#exportstatic

打开这个配置,然后关闭hash路由,试试。

如果要用hash 路由,推荐你用js来进行跳转。

ai180508 commented 2 years ago

你用这个 hash 可能不好搞了, https://umijs.org/zh-CN/config#exportstatic

打开这个配置,然后关闭hash路由,有用。

如果想要哈希推荐,推荐你用js来进行跳转。

你这个用 hash 路由可能不好搞了, https://umijs.org/zh-CN/config#exportstatic

打开这个配置,然后关闭hash路由,试试。

如果要用hash 路由,推荐你用js来进行跳转。

请问一下,路由用browser,exportStatic: { htmlSuffix: true },但是build后,浏览器访问http://localhost:8080后能正常跳转页面,刷新页面后就会报404,该如何解决了,尝试了官方文档提供的方法以及 application.properties添加:

spring.mvc.view.suffix=.html Java代码:

import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;

@Controller public class AntDesignController implements ErrorController { @Override public String getErrorPath(){ return "/error"; }

@RequestMapping(value = "/error")
public String getIndex(){
    return "index"; //返回index页面
}

}

都无法解决,所以才用的hash,如果通过js跳转请问该如何配置呢

chenshuai2144 commented 2 years ago

把 exportstatic 打开会生成很多份html的,你可以用这些html。

chenshuai2144 commented 2 years ago

现在实践大部分都是前后端分离的,你这种做到一起的估计不好搞