springboot前端的静态资源怎么放行
时间: 2023-11-22 19:25:44 浏览: 74
Spring Boot前端的静态资源可以通过在application.properties或application.yml文件中添加以下配置来放行:
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
其中,/static/**是指静态资源的URL路径,classpath:/static/是指静态资源的存储路径。这样配置后,所有/static/**的请求都会被转发到classpath:/static/目录下寻找对应的资源。
相关问题
springboot前端的自己创建静态资源路径怎么放行
可以在Spring Boot的配置文件中添加以下配置:
```
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
```
这样就可以将静态资源的路径放行并指定静态资源的位置为项目中的/static文件夹。
springboot3 shiro 前后端分离
### Spring Boot 3 中 Shiro 集成实现前后端分离架构
#### 安全管理器配置
为了使Shiro能够正常工作,需要定义`SecurityManager` Bean。该组件负责协调各个安全操作。
```java
@Bean
public SecurityManager securityManager(UserRealm userRealm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 设置自定义的 Realm 实现类
securityManager.setRealm(userRealm);
return securityManager;
}
```
上述代码展示了如何创建并返回一个 `DefaultWebSecurityManager` 的实例[^2]。
#### 过滤链定义
对于前后端分离的应用程序来说,设置合适的过滤规则至关重要。通过实现 `ShiroFilterChainDefinition` 接口可以灵活控制哪些URL路径应该被保护以及它们对应的安全约束条件。
```java
@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
Map<String, String> filterMap = new LinkedHashMap<>();
// 放行静态资源请求和其他无需认证的操作
filterMap.put("/static/**", "anon");
filterMap.put("/login", "anon");
// 对其他所有请求都需要经过身份验证
filterMap.put("/**", "authc");
chainDefinition.addPathDefinitions(filterMap);
return chainDefinition;
}
```
这段Java代码片段说明了怎样构建一个默认的过滤链条定义对象,并指定了不同类型的HTTP请求所应用的具体过滤策略[^3]。
#### 自定义领域 (Realm)
在实际项目里通常还需要提供自己的领域逻辑来处理用户的登录凭证校验等问题:
```java
public class UserRealm extends AuthorizingRealm {
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken = (UsernamePasswordToken)token;
// 假设这里是从数据库查询用户名密码匹配情况...
SimpleAuthenticationInfo authcInfo = null;
if(/* 用户名和密码正确 */) {
authcInfo = new SimpleAuthenticationInfo(upToken.getUsername(), password, getName());
}
return authcInfo;
}
}
```
此部分实现了 `AuthorizingRealm` 抽象类中的方法用于执行具体的用户认证过程[^1]。
#### Web 安全配置适配器
最后一步是在应用程序入口处注册这些bean以及其他必要的依赖关系,比如跨域资源共享(CORS),以便支持前端调用API接口时不受到同源政策限制:
```java
@Configuration
@EnableWebSecurity
public class WebSecurityConfig implements WebMvcConfigurer {
private final ShiroFilterChainDefinition shiroFilterChainDefinition;
private final SecurityManager securityManager;
public WebSecurityConfig(ShiroFilterChainDefinition shiroFilterChainDefinition,
SecurityManager securityManager){
this.shiroFilterChainDefinition = shiroFilterChainDefinition;
this.securityManager = securityManager;
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")//允许任何域名访问
.allowCredentials(true)//是否发送Cookie
.allowedMethods("GET","POST","PUT","DELETE","OPTIONS");//允许的方法类型
}
@Bean
public ShiroFilterFactoryBean shiroFilter(){
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
factoryBean.setSecurityManager(securityManager);
factoryBean.setFilterChainDefinitionMap(shiroFilterChainDefinition.getFilterChainMap());
return factoryBean;
}
}
```
以上就是关于Spring Boot 3环境下与Apache Shiro框架相结合以达到前后端分离模式下的安全性解决方案概述.
阅读全文