当前位置: 技术问答>java相关
页面的权限验证
来源: 互联网 发布时间:2015-06-25
本文导语: 如何对页面进行权限验证:不让在浏览器中直接输入页面名称即进入相关界面。 例如: http://localhost:8080/library/login.htm 进入登录界面 http://localhost:8080/library/ 就列出了library目录下所有的文件;之后点击一些文...
如何对页面进行权限验证:不让在浏览器中直接输入页面名称即进入相关界面。
例如:
http://localhost:8080/library/login.htm 进入登录界面
http://localhost:8080/library/ 就列出了library目录下所有的文件;之后点击一些文件就能够进行相关操作了----如何避免。
例如:
http://localhost:8080/library/login.htm 进入登录界面
http://localhost:8080/library/ 就列出了library目录下所有的文件;之后点击一些文件就能够进行相关操作了----如何避免。
|
resin
在docweb-inf、文件夹下面建立一个文件web.xml,加入以下内容!
none
在docweb-inf、文件夹下面建立一个文件web.xml,加入以下内容!
none
|
我们是这样处理的:
1。防止输入目录地址就列出目录下所有的文件--在每个目录下加入一个index.jsp
//代码如下
XX 分 销 管 理 系 统
top.location.replace("/index.jsp");//引回根目录下登陆页面。
2。防止直接输入页面地址就打开相应的页面
--首先,要配合用户注册,注册用户打开页面时读取相应的权限信息,写入Sesiion,在每个页面的开始进行判断,Session正确的话就执行相应的操作,否则引回根目录下登陆页面(可以写成一个Common.jsp文件,包含在每个页面的顶部
这是我们用的common.jsp文件,仅供参考
//权限处理beans
XX 分 销 管 理 系 统
alert('');
top.location.replace("../login.jsp");
3.以上情况不能避免合法用户直接打开某一授权页面,以及在新窗口打开联接的情况
可考虑用js实现common.jsp中加入
//以下防止用户直接打开授权浏览页面
String HH_Referer=request.getHeader("Referer");
if(HH_Referer==null)return;
//以下防止在新页面打开
Times2001(回车) :apache的conf文件里配置一下 ---能否讲的详细些?这个方法听说过,不知道该怎么做。
1。防止输入目录地址就列出目录下所有的文件--在每个目录下加入一个index.jsp
//代码如下
XX 分 销 管 理 系 统
top.location.replace("/index.jsp");//引回根目录下登陆页面。
2。防止直接输入页面地址就打开相应的页面
--首先,要配合用户注册,注册用户打开页面时读取相应的权限信息,写入Sesiion,在每个页面的开始进行判断,Session正确的话就执行相应的操作,否则引回根目录下登陆页面(可以写成一个Common.jsp文件,包含在每个页面的顶部
这是我们用的common.jsp文件,仅供参考
//权限处理beans
XX 分 销 管 理 系 统
alert('');
top.location.replace("../login.jsp");
3.以上情况不能避免合法用户直接打开某一授权页面,以及在新窗口打开联接的情况
可考虑用js实现common.jsp中加入
//以下防止用户直接打开授权浏览页面
String HH_Referer=request.getHeader("Referer");
if(HH_Referer==null)return;
//以下防止在新页面打开
Times2001(回车) :apache的conf文件里配置一下 ---能否讲的详细些?这个方法听说过,不知道该怎么做。
|
设置服务器禁止目录浏览。
写一个自定义tag:CheckLogonTag,这样在所有页面开头只需
加就可以了
import java.io.IOException;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.action.Action;
import org.apache.struts.util.BeanUtils;
import org.apache.struts.util.MessageResources;
/**
* Check for a valid User logged on in the current session. If there is no
* such user, forward control to the logon page.
*
*/
public final class CheckLogonTag extends TagSupport {
// --------------------------------------------------- Instance Variables
/**
* The key of the session-scope bean we look for.
*/
private String name = Constants.USER_KEY;
/**
* The page to which we should forward for the user to log on.
*/
private String page = "/logon.jsp";
// ----------------------------------------------------------- Properties
/**
* Return the bean name.
*/
public String getName() {
return (this.name);
}
/**
* Set the bean name.
*
* @param name The new bean name
*/
public void setName(String name) {
this.name = name;
}
/**
* Return the forward page.
*/
public String getPage() {
return (this.page);
}
/**
* Set the forward page.
*
* @param page The new forward page
*/
public void setPage(String page) {
this.page = page;
}
// ------------------------------------------------------- Public Methods
/**
* Defer our checking until the end of this tag is encountered.
*
* @exception JspException if a JSP exception has occurred
*/
public int doStartTag() throws JspException {
return (SKIP_BODY);
}
/**
* Perform our logged-in user check by looking for the existence of
* a session scope bean under the specified name. If this bean is not
* present, control is forwarded to the specified logon page.
*
* @exception JspException if a JSP exception has occurred
*/
public int doEndTag() throws JspException {
// Is there a valid user logged on?
boolean valid = false;
HttpSession session = pageContext.getSession();
if ((session != null) && (session.getAttribute(name) != null))
valid = true;
// Forward control based on the results
if (valid)
return (EVAL_PAGE);
else {
try {
pageContext.forward(page);
} catch (Exception e) {
throw new JspException(e.toString());
}
return (SKIP_PAGE);
}
}
/**
* Release any acquired resources.
*/
public void release() {
super.release();
this.name = Constants.USER_KEY;
this.page = "/logon.jsp";
}
}
写一个自定义tag:CheckLogonTag,这样在所有页面开头只需
加就可以了
import java.io.IOException;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.action.Action;
import org.apache.struts.util.BeanUtils;
import org.apache.struts.util.MessageResources;
/**
* Check for a valid User logged on in the current session. If there is no
* such user, forward control to the logon page.
*
*/
public final class CheckLogonTag extends TagSupport {
// --------------------------------------------------- Instance Variables
/**
* The key of the session-scope bean we look for.
*/
private String name = Constants.USER_KEY;
/**
* The page to which we should forward for the user to log on.
*/
private String page = "/logon.jsp";
// ----------------------------------------------------------- Properties
/**
* Return the bean name.
*/
public String getName() {
return (this.name);
}
/**
* Set the bean name.
*
* @param name The new bean name
*/
public void setName(String name) {
this.name = name;
}
/**
* Return the forward page.
*/
public String getPage() {
return (this.page);
}
/**
* Set the forward page.
*
* @param page The new forward page
*/
public void setPage(String page) {
this.page = page;
}
// ------------------------------------------------------- Public Methods
/**
* Defer our checking until the end of this tag is encountered.
*
* @exception JspException if a JSP exception has occurred
*/
public int doStartTag() throws JspException {
return (SKIP_BODY);
}
/**
* Perform our logged-in user check by looking for the existence of
* a session scope bean under the specified name. If this bean is not
* present, control is forwarded to the specified logon page.
*
* @exception JspException if a JSP exception has occurred
*/
public int doEndTag() throws JspException {
// Is there a valid user logged on?
boolean valid = false;
HttpSession session = pageContext.getSession();
if ((session != null) && (session.getAttribute(name) != null))
valid = true;
// Forward control based on the results
if (valid)
return (EVAL_PAGE);
else {
try {
pageContext.forward(page);
} catch (Exception e) {
throw new JspException(e.toString());
}
return (SKIP_PAGE);
}
}
/**
* Release any acquired resources.
*/
public void release() {
super.release();
this.name = Constants.USER_KEY;
this.page = "/logon.jsp";
}
}
|
这个要通过服务器来配置。
|
接受上一页的url不就结了
|
关注
|
apache的conf文件里配置一下
|
另外可以在每页加身份验证
用session
用session
|
用户注册时,给他授权,在每个页面开头判断他对此页面有没有权限
|
从resin的配置文件里禁用文件列表
|
可使用servlet2.3中的filter技术,比较灵活。
|
下面有一行:
Options FollowSymLinks MultiViews Indexes
请把Indexes删除,改成
Options FollowSymLinks MultiViews
这样,htdocs就不会被列出目录列表
|
guanzhu
|
建立一个页面对应的权限表。
再写一个页面权限的判别程序INCLUDE在页面里。就OK了。
我的就是这么做的,还不错。
再写一个页面权限的判别程序INCLUDE在页面里。就OK了。
我的就是这么做的,还不错。
|
你要消除服务器的目录服务