[讨论]struts模式的系统中,如何更好的处理权限控制

孬毛毛 2003-11-10 10:57:52
欢迎大家讨论!
...全文
124 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiez 2003-12-02
  • 打赏
  • 举报
回复
还是不怎么会,学习ing,有没有具体的代码或者相关的资料呢??
raymond323 2003-11-28
  • 打赏
  • 举报
回复
up
xinshou1979330 2003-11-20
  • 打赏
  • 举报
回复


Struts 学习ing
sallina 2003-11-20
  • 打赏
  • 举报
回复
mark and up
zcjl 2003-11-20
  • 打赏
  • 举报
回复
谢谢peopleking(蓝色幻想)和jiganghao(JH)两位
我再去试试看
jiganghao 2003-11-20
  • 打赏
  • 举报
回复
to zcjl:

put this line in your jsp:

<%@ page extends="AuthenticationJSP" %>

though I dont recommend this method. put such logic in controller (servlet or base action) or filter is better.
peopleking 2003-11-17
  • 打赏
  • 举报
回复
例子:
<action path="/admin/InsertUserProfile"
name="ModifyUserProfileForm"
scope="request"
input="/admin/insertUserProfile.jsp"
validate="true"
type="kaichuang.admin.action.InsertUserProfileAction">
<set-property property="loginRequired" value="true"/>
<forward name="success" path="/saveOk.jsp"/>
</action>

当然要修改ActionMapping,或者它的继承类ActionMappingSupport中添加
protected boolean loginRequired = false;

public ActionMappingSupport()
{
super();
}

public boolean isLoginRequired()
{
return loginRequired;
}

public void setLoginRequired(boolean loginRequired)
{
this.loginRequired = loginRequired;
}

然后在web.xml的<servlet></servlet>之间添加
<init-param>
<param-name>mapping</param-name>
<param-value>com.j2ee.waf.controller.web.action.ActionMappingSupport</param-value>
</init-param>
super_zzw 2003-11-14
  • 打赏
  • 举报
回复
JAAS(java认证和授权体系结构), 它可以让你的权限管理和控制独立于你的应用程序, 高度可插拔(只要修改配置文件就可以实现权限控制),非常有限的编程.
它是J2EE安全技术中的一个部分,网上有很多资料,或者直接到sun公司的中国开发者网站上去找.
temony 2003-11-14
  • 打赏
  • 举报
回复
mark
jakarta99 2003-11-13
  • 打赏
  • 举报
回复
我不建議修改 struts source code
只會造成之後的移植性的問題

修改 RequestProcessor
不如修改所有 Action extends BaseAction
將 execute() 都去做 Role-base Authorization
這就是 pow2acl 類似的觀念
不過 pow2acl 網路的版本是 struts 1.0..
而你需要的是了解他的 user-role-permission 的關係
去製作你真正想要用的 authorization 機制

此外, 製作 filter 增加文件的安全性也是很重要的機制
可以結合 jaas , 製作 web.xml 設定 role - group 的關係
建立一個 isValidUser and etc.. servlet auth 的機制

這是一個很大的課題
如何配合 LDAP 等等製作相關且共通式的平台
需要很多經驗與客制化



zcjl 2003-11-13
  • 打赏
  • 举报
回复
“如果使用了STRUTS搭建平台,怎样调EJB”

对EJB了解不多,这个恐怕没法给意见了
抱歉!
zcjl 2003-11-13
  • 打赏
  • 举报
回复
<action path="/test"
type="test.TestAction"
input="/main.jsp">
<set-property property="isCheckRequired" value="true"/>
<set-property property="right" value="test"/>
</action>
这是我的写法,结果
org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection
zcjl 2003-11-13
  • 打赏
  • 举报
回复
回复人: peopleking(蓝色幻想) ( ) 信誉:99 2003-11-13 09:16:00 得分:0


如果使用BaseAction的话,是不是要在每一个Action中,将功能ID hardCode 进去,这样限制是不是太多了?


一语中的,这就是我希望能改进的地方。因为总觉得很别扭

“我们同样可以继承RequestProcessor,ActionMapping”
这个倒要讨教一下,因为继承ActionMapping容易,但怎么才能让struts调用我们自己的ActionMapping?从前面的回复可以看出,我不是很赞同去修改struts的源代码的,如果是对自己的应用程序(如ActionForm,Action)做相应调整的话,倒还可以接受
zcjl 2003-11-13
  • 打赏
  • 举报
回复
to peopleking(蓝色幻想),
请问在struts-config.xml中
<set-property property="loginRequired" value="true"/>加在哪儿?
我放在<action></action>中和<forward>并列,失败了
在<controller></controller>之间倒是有类似的写法:
<set-property property="inputForward" value="true"/>
但与你叙述的
“然后在struts-config.xml中对需要登录的DO,添加
<set-property property="loginRequired" value="true"/>;”不符合啊
peopleking 2003-11-13
  • 打赏
  • 举报
回复
看来大家都是高手,请问一个问题,如果使用了STRUTS搭建平台,怎样调EJB,PETSTORE思想不错,但没法移植过来,我的做法是在ACTION中通过SERVICELOCATOR调EJBHOME,这样对EJB对象有一个缓存,不知大家有什么更好的建议?
peopleking 2003-11-13
  • 打赏
  • 举报
回复
如果使用BaseAction的话,是不是要在每一个Action中,将功能ID hardCode 进去,这样限制是不是太多了?我们同样可以继承RequestProcessor,ActionMapping,效果一样,灵活性其不是大增!这样我对STRUTS就没有做什么修改!
zcjl 2003-11-13
  • 打赏
  • 举报
回复
to jakarta99(99% jakarta),
----------------
Role-Permission 的關係
應該是 1:* 的關係
----------------
这个跟我们的做法有些不一致
我认为Role-Permission应该是n:n的关系
先为整个系统权限做权限(对系统的某种操作)的划分,再为每一个角色分配其可以拥有的权限
这样一来,一个权限可以为多个角色所拥有,而每个角色也可以有多个权限
我们做了一个role_right映射表,用来描述两者间的关系

现在我们要做的是:对用户(赋予某种角色)对系统的某个操作(.do),验证其是否具有完成该操作的权限。
所以我才需要对securityfilter做相应修改
zcjl 2003-11-13
  • 打赏
  • 举报
回复
to peopleking(蓝色幻想),
我的观点同jakarta99(99% jakarta)一样,
“不建議修改 struts source code
只會造成之後的移植性的問題”

如果非要对struts做某些修改的话,我更宁愿参照pow2acl的做法:
写一个继承自Action的基类,在里面进行登录及权限验证
然后所有的.do都继承这个基类
(事实上,这也是我目前的做法)

而对于jsp的限制,用filter是个不错的主意
securityfilter是个现成的东东,只需做少许修改,就可拿来为我所用了 ^_^

谢谢两位的建议,我再看看去

另:JAAS是什么东东啊,第一次听说
看来我还是太肤浅了
alluser 2003-11-13
  • 打赏
  • 举报
回复
学习
孬毛毛 2003-11-13
  • 打赏
  • 举报
回复
向高手们学习~~~再顶一下先~~~:)
加载更多回复(25)

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧