我有几种使用此签名的静态 Web 服务的方法
public @ResponseBody SomeObject someMethodSignature(Principal principal){
鉴于它是遗留代码,有没有办法从主体获取其他信息(Principal
是 java.security
的一个接口(interface),只有一个有用的方法 getName()
) 除了名称之外不需要将任何其他内容作为参数传递给方法?喜欢权限之类的东西吗?
谢谢
最佳答案
如果您如您所说使用 Spring Security,那么 Principal
对象应该是 Spring Security 的 Authentication
接口(interface)的实例。请参阅API Javadoc .
这意味着您可以强制转换主体并调用其上的 getAuthorities
方法,如下所示
((Authentication)principal).getAuthorities();
请注意,HttpServletRequest
的其他与安全相关的方法也会被重写,因此您还可以更改方法以获取请求对象并调用,例如 isUserInRole
方法如果这适合您的要求。这将避免您在类中添加对 Spring Security 的任何依赖。
关于java - 获取有关校长的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406039/