若依框架免token访问

在若依框架的简单使用中,已经简单介绍了一下SecurityUtils
这个类的作用,并且简单的阐述了一下其中方法的使用。
近段时间有个项目要求没有任何登录就能够访问,而若依框架本身对于每一个接口都会进行token的判断,以此来获取当前用户信息以及是否有权限访问。这个切片的控制实际上由Security
机制来控制的。
这个中间的token判断、ip判断、权限判断等等,都可以在SecurityConfig
的configure
方法中来配置,这个方法原型如下。
1 | /** |
可以看到其中有很多配置选项,具体可以自己查看一下。
我们如果不需要token就能够对接口进行直接的访问,根据上面的内容,我们可以把configure改成如下。
1 |
|
其他的一些配置要求,也可以一起来看一下。
HttpSecurity 配置方法详解
在使用 Spring Security 时,
HttpSecurity
是一个核心类,用于配置基于 HTTP 请求的安全策略。通过HttpSecurity
,我们可以灵活地定义哪些请求需要进行身份验证、哪些请求需要特定的角色或权限,以及如何处理各种安全相关的细节。常见配置方法
1
2
3
4 >http.authorizeRequests()
.antMatchers("/public/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated();anyRequest
描述:匹配所有请求路径。
示例:
1 >.anyRequest().authenticated()说明:如果没有其他更具体的匹配规则,所有请求都将应用此规则。
access
描述:SpringEl 表达式结果为
true
时可以访问。示例:
1 >.antMatchers("/api/**").access("hasRole('ADMIN') or hasRole('USER')")说明:可以使用复杂的 SpringEl 表达式来定义访问规则。
anonymous
描述:匿名可以访问。
示例:
1 >.antMatchers("/guest/**").anonymous()说明:允许未登录的用户访问指定路径。
denyAll
描述:用户不能访问。
示例:
1 >.antMatchers("/secure/**").denyAll()说明:完全禁止访问指定路径。
fullyAuthenticated
描述:用户完全认证可以访问(非 remember-me 下自动登录)。
示例:
1 >.antMatchers("/admin/**").fullyAuthenticated()说明:只有通过完整认证的用户(非 remember-me 登录)可以访问。
hasAnyAuthority
描述:如果有参数,参数表示权限,则其中任何一个权限可以访问。
示例:
1 >.antMatchers("/api/**").hasAnyAuthority("ROLE_ADMIN", "ROLE_USER")说明:用户拥有任何一个指定权限即可访问。
hasAnyRole
描述:如果有参数,参数表示角色,则其中任何一个角色可以访问。
示例:
1 >.antMatchers("/api/**").hasAnyRole("ADMIN", "USER")说明:用户拥有任何一个指定角色即可访问。
hasAuthority
描述:如果有参数,参数表示权限,则其权限可以访问。
示例:
1 >.antMatchers("/api/admin/**").hasAuthority("ROLE_ADMIN")说明:用户必须拥有指定权限才能访问。
hasIpAddress
描述:如果有参数,参数表示 IP 地址,如果用户 IP 和参数匹配,则可以访问。
示例:
1 >.antMatchers("/api/**").hasIpAddress("192.168.1.1")说明:只有来自指定 IP 地址的用户可以访问。
hasRole
描述:如果有参数,参数表示角色,则其角色可以访问。
示例:
1 >.antMatchers("/api/admin/**").hasRole("ADMIN")说明:用户必须拥有指定角色才能访问。
permitAll
描述:用户可以任意访问。
示例:
1 >.antMatchers("/public/**").permitAll()说明:允许所有用户(包括未登录用户)访问指定路径。
rememberMe
描述:允许通过 remember-me 登录的用户访问。
示例:
1 >.antMatchers("/api/user/**").rememberMe()说明:允许通过 remember-me 功能自动登录的用户访问。
authenticated
描述:用户登录后可访问。
示例:
1 >.antMatchers("/api/**").authenticated()说明:用户必须登录后才能访问。
其他配置要求
除了上述常见的配置方法,
HttpSecurity
还提供了许多其他配置选项,用于处理各种安全相关的细节。以下是一些常见的配置要求和示例:登录和注销
登录配置:
1
2
3
4
5 >http
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/home", true)
.permitAll();注销配置:
1
2
3
4
5 >http
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login?logout")
.permitAll();CSRF 保护
- 启用 CSRF 保护:
1
2
3 http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
禁用 CSRF 保护:
1
2
3 http
.csrf()
.disable();CORS 配置
启用 CORS:
1
2
3
4
5 >http
.cors()
.and()
.csrf()
.disable();异常处理
- 自定义异常处理:
1
2
3
4 http
.exceptionHandling()
.accessDeniedPage("/403")
.authenticationEntryPoint(new CustomAuthenticationEntryPoint());安全上下文
配置安全上下文:
1
2
3 http
.securityContext()
.securityContextRepository(new CustomSecurityContextRepository());
总结
通过 HttpSecurity
,我们可以灵活地配置 Spring Security 的各种安全策略。从简单的访问控制到复杂的异常处理,HttpSecurity
提供了丰富的配置选项,满足不同项目的需求。更多详细信息可以参考 Spring Security 官方文档。
- 标题: 若依框架免token访问
- 作者: Sabthever
- 创建于 : 2025-06-03 16:02:06
- 更新于 : 2025-06-04 10:12:01
- 链接: https://sabthever.online/2025/06/03/technology/java/若依框架免token访问/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。