IT培训网

达内论坛

 找回密码
 立即注册
搜索
查看: 2628|回复: 1

谈谈Struts2应用程序的安全功能怎样配置

[复制链接]

2052

主题

2251

帖子

7731

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7731
QQ
发表于 2017-5-24 17:48:03 | 显示全部楼层 |阅读模式
安全性是Web应用程序开发工作中最关键的问题之一。Struts2应用程序的安全功能,在基于servlet的应用程序里,保护应用程序资源的办法有两种:一是对应用程序进行配置(web.xml),二是使用Java代码硬编码到程序中。
安全性是Web应用程序开发工作中最关键的问题之一。在基于servlet的应用程序里,保护应用程序资源的办法有两种:一是对应用程序进行配置(web.xml),二是使用Java代码硬编码到程序中。前一种方法使用配置文件,该方法很灵活,这是因为通过使用配置文件,无需改写任何代码就可以改变安全策略,是一种常见的手段。而Struts 2是基于servlet技术的,所以Struts 2的安全策略也可以使用配置文件进行灵活的配置。
配置安全策略时,有两个概念需要清楚的区分 ,用户和角色,简单的说用户为使用计算机的人,可以是个人或组织。角色是一个抽象的概念,泛指职务或者权限。例如,张三,李四,王五三个人,有职员、主管和经理三个职务(权限),张三是用户,张三可以是主管职务,代表张三这个用户含有主管的权利。
不同的servlet容器所提供的用户和角色管理机制是不相同的。我使用的是Tomcat服务器,它提供的用户和角色管理机制文件是在其安装目录下的conf目录中的tomcat-users.xml文件,可以在这个文件里完成对用户和角色的编辑。例如:
这个文件定义了2个角色(tomcat和role1)和3名用户(tomcat、both和role1)。你可以在tomcat-users.xml文件里定义任意多个用户和角色。
使用Struts 2保护应用程序的资源
Struts 2应用程序的安全策略是通过部署web.xml文件中的security-constraint元素实现的,该元素的语法定义:
该语法说明了,security-constraint元素可以有一个可选的display-name子元素,至少一个web-resource-collection子元素,一个可选的auth-constraint子元素和一个可选的user-data-constraint子元素。
web-resource-collection子元素是用来列出打算保护的Web资源,具体的做法是为这些资源设置URL限制,它是通过设置web-resource-collection元素包含的子元素实现的:
◆ web-resource-name:是与受保护资源相关联的名称。该子元素为必须元素。
◆ description:对给定资源的描述。这个子元素为可选元素。
◆ url-pattern:用来设置URL表达式,与这个URL表达式相匹配的URL地址指向的资源将受到保护。该子元素为至少有一个,为必须元素。
◆ http-method:用来表明哪些HTTP方法将受到限制,例如设置为GET那么所有的GET请求就将受到限制。该元素为可选元素。
auth-constraint元素用于指定可以访问该资源用户角色集合。如果没有指定auth-constraint元素,就将安全约束应用于所有角色。它包含下面几个子元素:
◆ description:描述。该元素是可选元素。
◆ role-name:可以访问保护资源的用户角色。该元素可以有多个。
◆ user-data-constraint元素用来设置怎样保护在客户端和Web容器之间传递的数据。
◆ description: 描述。可选元素。
◆ transport-guarantee :该元素有以下几个值
1. NONE,这意味着应用不需要传输保证。
2. INTEGRAL,意味着服务器和客户端之间的数据必须以某种方式发送,而且在传送中数据不能被篡改。
3. CONFIDENTIAL,这意味着传输的数据必须加密。
配置完毕security-constraint元素的基本信息,大致为下面的格式:
Admin Arew *.action myeclipseWeb
这个security-constraint元素的效果为:只要与表达式"*.action"匹配的请求不是来自拥有"myeclipseWeb"权限的用户,Web容器就会阻断它。在这里还可以使用http-method元素,阻断特定方法的请求,因为没有使用会阻断所有方法提交的请求。
设置完安全策略后,还需要设置让用户有机会提供证明,证明自己有权限访问这个受限资源的登陆方法。允许使用的登陆方法使用login-config元素设置。




下一篇:如何快速了解HTML的基本概念
回复

使用道具 举报

2052

主题

2251

帖子

7731

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7731
QQ
 楼主| 发表于 6 天前 | 显示全部楼层
Struts2开发程序的基本步骤:

第一步:加载Struts2类库

下载后的Struts 2类库中包含很多jar包,但是并不是都需要导入到项目中,因此只需要选择与项目功能实现相关的jar包导入即可

第二步:配置xml文件

代码如下:



web_0812


index.html

index.htm

index.jsp

default.html

default.htm

default.jsp




struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2

*.action



第三步:开发视图层页面:这里简单写个页面




用户名:





密码:











注册



<》

第四步:开发控制层Action

package com.zking.action;

import java.util.Map;

import org.apache.struts2.ServletActionContext;

import org.apache.struts2.convention.annotation.Namespace;

import org.apache.struts2.convention.annotation.ParentPackage;

import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

import com.zking.entity.User;

public class UserAction extends ActionSupport {

//// StrutsPrepareAndExecuteFilter

//这个user和视图层的user是同一个

private User user;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

//登录

public String login() throws Exception {

// TODO Auto-generated method stub

System.out.println("到了UserAction的login...");

System.out.println("用户名:"+user.getUname());

System.out.println("密码:"+user.getUpwd());

//耦合方式:将登录信息放入session中

//ServletActionContext.getRequest().getSession().setAttribute("myuser", user);

//解耦方式

if("admin".equals(user.getUname()) && "123123".equals(user.getUpwd())){

Map session=ActionContext.getContext().getSession();

session.put("myuser", user);

return Action.SUCCESS;

}else{

return Action.ERROR;

}

}

}

第五步:在src下配置Struts.xml文件



"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">






disatcher(默认)转发

login_success.jsp

login_fail.jsp




第六步:部署、运行项目

最后运行出来,我这里只是做了一个很是简单的登录。没有用数据库,只是用了死数据而已
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

IT培训网

QQ|小黑屋|手机版|cnitedu Inc. ( 豫ICP备16023996号-1 )

GMT+8, 2019-10-15 02:47 , Processed in 0.118848 second(s), 12 queries , File On.

Powered by Discuz! X3.3

© 2011-2017 cnitedu Inc.

快速回复 返回顶部 返回列表