Spring security Spring安全性-决定是否需要登录或允许匿名访问的复杂逻辑

Spring security Spring安全性-决定是否需要登录或允许匿名访问的复杂逻辑,spring-security,Spring Security,使用spring安全性,我面临一个复杂的业务决策需求,即是否允许匿名访问或坚持用户登录。对于“截取url”表达式来说,逻辑太复杂(截取url模式='/mypattern/**'…) 有谁能提供一些关于如何在春季安全中实现这一点的提示吗?提前感谢当然,代码可以有多种形式,但要想了解这一点: Authentication auth=SecurityContextHolder.getContext().getAuthentication(); if(匿名身份验证令牌的身份验证实例&“the_firm”

使用spring安全性,我面临一个复杂的业务决策需求,即是否允许匿名访问或坚持用户登录。对于“截取url”表达式来说,逻辑太复杂(截取url模式='/mypattern/**'…)


有谁能提供一些关于如何在春季安全中实现这一点的提示吗?提前感谢

当然,代码可以有多种形式,但要想了解这一点:

Authentication auth=SecurityContextHolder.getContext().getAuthentication();
if(匿名身份验证令牌的身份验证实例&“the_firm”.equals(title)){
抛出新的AccessDeniedException(“需要登录!”);
}
更新:更具说明性的方法是使用注释:

@PostAuthorize(“hasPermission(returnObject,'READ')”)
公共书籍findBook(字符串标题){
// ...
}
这要求您创建一个bean并添加配置:


@Bean
public DefaultMethodSecurityExpressionHandler expressionHandler(){
DefaultMethodSecurityExpressionHandler=新的DefaultMethodSecurityExpressionHandler();
handler.setPermissionEvaluator(permissionEvaluator);
返回处理程序;
}

谢谢,事实上,我看到此异常在框架中有一个独特的用法,以便对凭据提出质疑。非常感谢。我仍然想知道是否有一种更具声明性的方式?“截取url模式=标题\版权访问=角色\用户”行中的某些内容?
E.g. assume a RESTFul books service:
https://myserver/rest/book?title=war_and_peace
https://myserver/rest/book?title=the_firm

Say "war and peace" allows anonymous access because its old and its copyrights have expired.
While "the firm" is copyrighted & requires login (so as to charge the user).
This copyright info is available in a database.