我想了解春天的安全。我使用的是java-config而不是xml。我尝试创建一个控制器,然后测试df.loc[df.Col2.isin(['Z','X']), 'Col3'] = 'J'
df.loc[df.Col2 == 'Y', 'Col3'] = 'K'
df['Col3'] = df.Col3.fillna(df.Col1)
print (df)
Col1 Col2 Col3
1 A Z J
2 B Z J
3 B X J
4 C Y K
5 C W C
符号。但是在我给定的代码中,@PreAuthorize
仅在我使用@PreAuthorize
函数时才有效,但当我使用getActiveSessions
函数时它没有效果。所以这段代码按预期工作
getName
但这不是
public class DemoSessionController extends SessionController{
@RequestMapping("/welcome/{a}")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String getActiveSessions(@PathVariable String a) {
// TODO Auto-generated method stub
String str = getName(a);
return str;
}
public String getName(String name) {
// TODO Auto-generated method stub
return "This is "+name+"";
}
}
有人可以解释为什么第二种情况不起作用,我该如何才能使其发挥作用?谢谢!!
答案 0 :(得分:1)
如评论中所述,仅在从外部调用对象时才会处理注释。有几种解决方案。
您可以将需要注释的方法拆分为在单独的对象中处理,例如一个用
注释的AdminObjecttemplate <typename U,
typename T = std::enable_if_t<std::is_pointer<U>::value, std::remove_pointer_t<U>>>
void f(U const& pof) // U == T*
在班级。这样您就不需要为每种方法添加注释。您应该在类private中标记内部方法,以防止从外部使用它们。这需要重新排序应用程序逻辑,但将所有管理任务放在一个对象中可能会有所帮助。
另一个解决方案显然是为方法所做的所有任务添加所需的注释,包括由公共方法使用的方法执行的注释。
编辑1:
添加了示例类以使建议的解决方案更加清晰
@PreAuthorize("hasRole('ROLE_ADMIN')")