Action:
[code="java"]package com.ssh2.user.web.action;
public class userAction extends ActionSupport {
public String addNewUser() {
//省略
return SUCCESS;
}
}[/code]
如果一个账户有'添加新用户'功能,权限表里就存储一个字符串“com.ssh2.user.web.action.addNewUser()”,登陆时取出并且存入session
然后做'添加新用户'操作时,会进入拦截器,拦截器里取被拦截的类和方法,然后做比较,如果相同表示有权限,这样做好吗?
有没有经典一些的做法,我在这方面没经验
你这种用拦截器来实现权限管理的方式也算一种用struts2本身的优势来做,还不错
一般都是用SpringSecurity做这方面的事情,你这样设计有一个比较明显的缺陷,就是数据库中的权限设计完全和程序中的代码耦合,你代码一改,数据库马上就要跟着改
如果你查了SpringSecurity就知道是什么东西了
SpringSecurity是独立的,能解决你问题的东西你不用,偏要用struts2
[code="java"]
package com.ssh2.user.web.action;
[/code]
看着代码也不是只用struts2吧
你硬是要只用struts2做权限控制也可以,数据库这块要好好设计,比较典型是用户-角色-权限的设计,你现在拦截器里面判定的是权限,用了上面那个设计你只要判定角色就行了,好处不言而喻