加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 访问服务层和控制器中的spring用户 – Spring 3.2的任

发布时间:2020-12-15 01:43:45 所属栏目:大数据 来源:网络整理
导读:我想访问当前登录的用户,我这样做(从静态方法) public static User getCurrentUser() {final Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();if (principal instanceof User) { return (User) principal; }} 或

我想访问当前登录的用户,我这样做(从静态方法)

public static User getCurrentUser() {

final Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof User) {
  return (User) principal;
  }
}

或注射和铸造如下:

@RequestMapping(value = "/Foo/{id}",method = RequestMethod.GET)
public ModelAndView getFoo(@PathVariable Long id,Principal principal) {
        User user = (User) ((Authentication) principal).getPrincipal();
..

在用户实现用户细节的地方,两者看起来有点蹩脚在Spring 3.2中有更好的方法吗?

最佳答案
我不认为它在春季3.2中有新的东西用于此目的.您是否考虑过使用自定义注释?

像这样的东西:

具有自定义注释的控制器:

@Controller
public class FooController {

    @RequestMapping(value="/foo/bar",method=RequestMethod.GET)
    public String fooAction(@LoggedUser User user) {
        System.out.print.println(user.getName());
        return "foo";
    }
}

LoggedUser注释:

@Target(ElementType.PARAMETER)
@Retention(RententionPolicy.RUNTIME)
@Documented
public @interface LoggedUser {}

WebArgumentResolver:

public class LoggedUserWebArgumentResolver implements WebArgumentResolver {

    public Object resolveArgument(MethodParameter methodParameter,NativeWebRequest webRequest) {
        Annotation[] annotations = methodParameter.getParameterAnnotations();

        if (methodParameter.getParameterType().equals(User.class)) {
            for (Annotation annotation : annotations) {
                if (LoggedUser.class.isInstance(annotation)) {
                    Principal principal = webRequest.getUserPrincipal();
                    return (User)((Authentication) principal).getPrincipal();
                }
            }
        }
        return WebArgumentResolver.UNRESOLVED;
    }
}

豆类配置:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读