【发布时间】:2015-01-04 15:15:30
【问题描述】:
我开始使用 Spring Security。现在我设置该用户必须登录,如果他们不会创建表。或者,例如,在我配置为只有角色 ROLE_USER 的用户可以删除表的 ControllerClass 中。
我的问题是,当用户登录并创建一些表格并创建 teamPlayers 时,我可以通过哪种方式设置表格或玩家只能编辑或删除创建表格和玩家的用户。
例如,我在Controller方法中有删除表...
@RestController
@RequestMapping(value="/api/tables")
public class ApiTableController {
@Autowired
TableService tableService;
@Autowired
TableConverter tableConverter;
@PreAuthorize("hasRole('ROLE_USER')")
@RequestMapping(value="/{id}", method=RequestMethod.DELETE)
public ResponseEntity<TableDTO> deleteTable(@PathVariable Long id) {
Table table = tableService.findOne(id);
if (table != null) {
TableDTO tableDTO = tableConverter.table2TableDTO(table);
tableService.remove(id);
return new ResponseEntity<>(tableDTO, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
在这种情况下,所有角色为 ROLE_USER 的用户都可以删除所有表,但我不会只删除表用户是如何创建表的……有什么规则它是如何工作的或标准代码吗?就像 StackOwerflow 上的配置文件一样。每个人都可以看到我们写的内容,每个人都可以创建配置文件,只有我可以编辑我的配置文件或我在网站上写的问题。我怎么能用 Spring 安全性做这样的事情?
这是用户类
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue
@NotNull
@Column(name = "user_id")
private Long id;
@Column(name = "username")
private String name;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
@Column(name = "country")
private String country;
@Column(name = "city")
private String city;
@Column(name = "dateCreated")
private Date dateCreated;
@Column(name = "enabled")
private boolean active;
@JoinTable(name = "user_security_role", joinColumns = { @JoinColumn(name = "user_id",
referencedColumnName = "user_id") }, inverseJoinColumns = {
@JoinColumn(name = "security_role_id", referencedColumnName = "id") })
@ManyToMany
private Set<SecurityRoleUser> securityRoleCollection;
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof User)) {
return false;
}
User other = (User) object;
if ((this.id == null && other.id != null)
|| (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
这是类 Table ...
@Entity
@javax.persistence.Table(name="tblTable")
public class Table {
@Id
@GeneratedValue
@Column(name="table_id")
private Long id;
@Column(name="name", nullable=true)
private String name;
@Column(name="sport", nullable=true)
private String sport;
@Column(name="typeTable", nullable=true)
private String TypeTable;
@Column(name="dateCreated", nullable=true)
private Date dateCreated;
@Column(name="changed", nullable=true)
private Date changed;
@Column(name="description", nullable=true)
private String description;
我使用hibernate、maven、RESTFull web server、backbone.js....
【问题讨论】:
标签: java spring hibernate spring-security