选择性地拒绝对已登录用户的操作子集的访问



在我的struts应用程序中,我想有选择地重定向一些用户(基于他们的角色)到一个静态页面,当他们访问一些操作。

我不是在这里寻找完全成熟的授权解决方案,但我的问题非常相似。

是否有办法在struts-config.xml中放置一些标志或任何其他细节,可以在java代码中使用,以确定动作是否属于我想要选择性拒绝访问的类别?

注意:我没有直接扩展org.apache.struts.action.Action作为我的action。相反,我定义了一个抽象类,它扩展了org.apache.struts.action.Action,应用程序中的其他操作扩展了这个抽象类。因此,我可以在这里执行验证。我可以使用mappings.getPath()识别这里的操作类型。但我不想硬编码的路径列表,我想有选择地拒绝访问,相反,我期待着如果这可以配置在struts-config.xml。

这可以在struts-config.xml文件中通过使用<action>配置的roles属性来配置。您可以指定您的用户应该拥有访问特定操作的角色。

这样你就可以避免在mappings.getPath()上做测试(我同意你的看法,这是一个丑陋的解决方案)。

一旦配置了角色,您就可以创建一个自定义请求处理器,以您喜欢的任何方式处理这些角色。

您可以在web上找到关于Struts安全角色的更多信息,但是这里有一个基本的示例来帮助您入门。

最新更新