日期:2014-05-18  浏览次数:20716 次

登录做了等于没做。。
问题是我做的登录 可以直接用地址绕过去。比如你先登录成功 复制下地址 直接就可以用了。
好像不应该这样的。里面的网页也是,不用登录直接就能打开。
我该这么做??才能让我的登录起到作用? 不登录是不能进入任何一个页面的??

------解决方案--------------------
用session。 一般用户登陆信息都存在session中。 
我给2中解决方式 
(1)如果需要登陆验证才能访问的页面少的话可以通过include文件方式。 
把下面代码保存文件名字为checksession.jsp 
<%@ page language="java" contentType="text/html; charset=GBK" 
pageEncoding="GBK"%> 
<% 
if(session.getAttribute("userinfo")==null){ 
//用户没有登陆 
response.sendRedirect("/login.jsp"); 

%> 
//把需要登陆才能访问的页面中包含这个文件。 
(2)如果需要登陆验证的页面多的话建议采用filter. 
package com.filter; 
import java.io.IOException
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
/* 
*TestFilter 在web.xml中配置说明 

*<filter> 
* <filter-name>TestFilter</filter-name> 
* <filter-class>com.filter.TestFilter</filter-class> 
* </filter> 
*配置需要经过login.jsp登陆过才能访问的区域 
*目前配置方式仅仅是在用户访问product.jsp的时候才走过滤器,可以配置/*,/user/*等。 
* <filter-mapping> 
* <filter-name>TestFilter</filter-name> 
* <url-pattern>/product.jsp</url-pattern> 
* </filter-mapping> 
* 韩卫召 
*/ 
public class TestFilter implements Filter { 

public void destroy() { 
//过滤器销毁,一般是释放资源 

/**
* 某些url需要登陆才能访问(session验证过滤器) 
*/ 
public void doFilter(ServletRequest arg0, ServletResponse arg1, 
FilterChain arg2) throws IOException, ServletException
HttpServletRequest request=(HttpServletRequest)arg0; 
HttpServletResponse response=(HttpServletResponse)arg1; 
HttpSession session=request.getSession(); 
//userinfo,需要通过login.jsp 登陆后向session中写入用户信息,标示用户已经登陆 
if(session.getAttribute("userinfo")==null){ 
String errors = "请先登陆,再访问此服务!"; 
request.setAttribute("errors", errors); 
request.getRequestDispatcher("/login.jsp").forward(request, response); 
}else{ 
arg2.doFilter(request, response); 


public void init(FilterConfig arg0) throws ServletException { 
//初始化操作,读取web.xml中过滤器配置的初始化参数,满足你提的要求不用此方法 

}
------解决方案--------------------
用session解决。
每次登陆后在session中设置键值,如session.setAttribute("logined","UserLogined");
每次尝试进入其它页面时,在JSP的顶部从session取出String logined = session.getAttribute("logined");
然后判断该字符串是否为空,如果为空,则做相应处理(如重定向至登陆页面),不让没有登陆的用户进入。
------解决方案--------------------
我倒建议用1楼第二种方式,将需要登陆验证的页面放在一个或几个目录中,这些需要验证的页面只需要按照正常思路编写就行,如在manager目录中jsp的访问需要登陆验证,则1楼的例子在web.xml中可以这样:
<filter> 
 <filter-name>TestFilter </filter-name> 
 <filter-class