快速业务通道

Spring Security 2配置精讲 上 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
y.READ_WRITE)     private Set<Role> roles;         // setters and getters } @Entity @Proxy(lazy = false) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class User {  private static final long serialVersionUID = 8026813053768023527L;     @Id  @GeneratedValue  private Integer id;  private String name;  private String password;  private boolean disabled;  @ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER)     @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)  private Set<Role> roles;         // setters and getters }

Spring Security 2配置精讲 上(9)

时间:2011-10-16

Java代码

@Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Role {     @Id     @GeneratedValue     private Integer id;     private String name;         // setters and getters } @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Role {  @Id  @GeneratedValue  private Integer id;  private String name;         // setters and getters }

请注意这里的Annotation的写法。同时,我为User和Role之间配置了缓存。并且将他们之间的关联关系设置的lazy属性设置成false,从而保证在User对象取出之后的使用不会因为脱离session的生命周期而产生lazy loading问题。

2. 使User类实现UserDetails接口

接下来,我们让User类去实现UserDetails接口:

Java代码

@Entity @Proxy(lazy = false) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class User implements UserDetails {     private static final long serialVersionUID = 8026813053768023527L;     @Id     @GeneratedValue     private Integer id;     private String name;     private String password;     private boolean disabled;     @ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER)     @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))     @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)     private Set<Role> roles;     /**      * The default constructor      */     public User() {     }     /* (non-Javadoc)      * @see org.springframework.security.userdetails.UserDetails#getAuthorities()      */     public GrantedAuthority[] getAuthorities() {         List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>(roles.size());         for(Role role : roles) {             grantedAuthorities.add(new GrantedAuthorityImpl(role.getName()));         }         return grantedAuthorities.toArray(new GrantedAuthority[roles.size()]);     }     /* (non-Javadoc)      * @see org.springframework.security.userdetails.UserDetails#getPassword()      */     public String getPassword()

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号