【问题标题】:Role-based access control with Spring MVC使用 Spring MVC 进行基于角色的访问控制
【发布时间】:2011-11-02 16:29:09
【问题描述】:
我想知道使用 spring 进行基于角色的访问控制的最佳实践。
我的要求是,
我将分配给用户的一组角色说,
user1=admin, user2=expert
user1 将拥有像这样写的访问权限
/admin/会员管理
/admin/项目管理
......
对于用户 2....
/myproject1/*
所以如果 user2 尝试 访问 url
/admin/会员管理
将被重定向到授权失败页面。
【问题讨论】:
标签:
authentication
spring-mvc
authorization
【解决方案3】:
public class DashBoardController {
@Autowired
UserService userService;
private static final Logger logger = LoggerFactory.getLogger(DashBoardController.class);
@SuppressWarnings("unchecked")
@RequestMapping(value = PathProxy.DashBoardUrls.SHOW_DASHBOARD, method = RequestMethod.GET)
public String role(Locale locale, Model model) {
String userRole = null;
logger.info("dashboard Controller");
Collection<SimpleGrantedAuthority> authorities = (Collection<SimpleGrantedAuthority>) SecurityContextHolder
.getContext().getAuthentication().getAuthorities();
for (SimpleGrantedAuthority simpleGrantedAuthority : authorities) {
userRole = simpleGrantedAuthority.toString();
}
switch (userRole) {
case "ROLE_ADMIN":
return "dashboard/admin";
case "ROLE_HR_MANAGER":
return "dashboard/hr_manager";
case "ROLE_MANAGER":
return "dashboard/manager";
case "ROLE_EMPLOYEE":
return "dashboard/employee";
case "ROLE_COMPANY_ADMIN":
return "dashboard/admin";
default:
break;
}
return userRole;
}
}