在SpringBoot应用程序中,我试图为两个不同的区域实现两个不同的授权。
区域1 [API]: / api / **
区域2 [管理员]: / admin / **
区域1 [API]是实现JWT身份验证的应用程序的API部分。每个以abstract class ServiceIf[RunArgs](val name: String) {
def run(arg: RunArgs): Any = {}
}
class RexecIf extends ServiceIf[(ExecParams, Int)]("Rexec") {
override def run(arg: (ExecParams, Int)) = {
// ...
}
}
开头的请求都将需要一个包含jwt令牌的Authorization标头。
区域2 [管理员]:是管理员区域。我想使用浏览器中的URL登录的位置,例如(/ admin / login)。我希望将用户名和密码保存在application.properties中,对于以/api
开头的任何URL,我都希望对用户进行身份验证(基于会话)。在这种情况下,我想应用内存中身份验证。我正在寻找针对两个不同领域实施这两种不同身份验证的想法。
答案 0 :(得分:0)
您可以使用.authorizeRequests()
方法为该安全配置文件配置端点。
在void configure(HttpSecurity http)
或WebSecurityConfigurerAdapter
文件中的ResourceServerConfigurerAdapter
方法中,您可以使用
http
.antMatcher("/api/**")
.authorizeRequests()
...
然后,Spring Security将开始授权以/api
路径开头的请求。
如果将其添加到ResourceServerConfigurerAdapter
弹簧中,则oauth2将从那里开始授权。要在/admin
WebSecurityConfigurerAdapter
这样的终结点配置Web安全性
http
.antMatcher("/admin/**")
.authorizeRequests()
...