如何禁止访问者不通过登录页面而强行进入其他页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁止访问者不通过登录页面而强行进入其他页面相关的知识,希望对你有一定的参考价值。

好像在Web.config文件中可以设置的,就是用户不登陆,进入其他页面的话就强制跳转到登陆页面.怎么设置?各位大侠!
7楼和8楼,很感谢你们! 但是我是asp.net 配置文件中没有<filter>节点

首先把登陆后后的页面和非登陆的界面加以区分
把登陆后的界面归入同一个文件夹下(这里指的是网页的URL地址)
例如 工程地址是http://localhost/test/
可以把 登陆后的网页以及servlet全部归入http://localhost/test/checked/

然后,用一个filter对checked下的所有访问进行过滤
用一个sessionAttribute进行判断是否已经登录(属性名字,和有效值可以随意),这个sesstionAttribute应当在登录成功后被设置成有效值,未登录和退出时设置成无效值。

在filter中对取得该sessionAttribute并进行判断,当且仅当该seesionAttribute值为有效值时候,doFilter;否则重定向到主页。

web.xml配置中对该Filter应当进行正确配置
例: <filter>
<filter-name>MyFilter</filter-name>
<filter-class>xxx.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/checked/*</url-pattern>
</filter-mapping>

即可
参考技术A 可以用过滤器做,filter,在filter中判断登陆session是否存在,不存在就返回到首页。存在则可以进入
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
if(request.getSession().getAttribute("user")==null)
response.sendRedirect("index.jsp");
else
chain.doFilter(request, response);



web.xml中配置如下:
<filter>
<filter-name>filter类的名字</filter-name>
<filter-class>类的路径</filter-class>
</filter>
<filter-mapping>
<filter-name>和上面对应的名字</filter-name>
<url-pattern>要过滤的路径</url-pattern>
</filter-mapping>
参考技术B 有很多种权限控制的方法,基本就是遵循登陆的时候把登陆信息放到SESSION中。然后可以再每个页面调用权限控制的标签来判断;也可以当用户点击一个模块时调用权限的查询,查看当前用户是否有权限 参考技术C 写一个验证是否登陆的filter,并在web.xml中配置好。就可以了 参考技术D 1.session 控制:
登陆完后设置session,session.setAttribute(“user”,userId);
每个页面加一个session.getAttribute(“user”)来判断

通过 cookie 信息实现自动登录

什么是 cookie:某些网站为了辨别用户身份,进行 session 跟踪而存储在用户本地上的数据,通过 cookie 可以访问网站的其他页面,否则是禁止访问的

如何获取 cookie :

In [1]: import urllib2, cookielib

In [2]: cookie = cookielib.CookieJar()    # 获取存在本机的cookie消息,但第一次获取为空,只有访问了一个URL之后才有cookie信息

In [3]: handler = urllib2.HTTPCookieProcessor(cookie)      # 创建一个处理器,用于处理cookie信息

In [4]: opener = urllib2.build_opener(handler)             # 通过cookie处理器构建opener,使得opener跟CookieJar对象绑定

In [5]: response = opener.open(http://www.baidu.com/)    # 使用opener来访问一个URL便会收集到cookie信息

In [6]: for i in cookie:
   ....:     print %s: %s % (i.name, i.value)
   ....:     
BAIDUID: D9487EEE0A9D16C06CA7517EACC00798:FG=1
BIDUPSID: D9487EEE0A9D16C06CA7517EACC00798
H_PS_PSSID: 1445_21112_18560_17001_25178_20930
PSTM: 1514119274
BDSVRTM: 0
BD_HOME: 0

实例:通过 cookie 自动登录企业邮箱

#!/usr/bin/env python
#-*- coding: utf8 -*-

import re
import urllib
import urllib2
import cookielib

class MyMail(object):
    def __init__(self):
        self.headers = {User-Agent: Mozilla/5.0 (Windows NT6.1; rv:47.0) Gecko/20100101 Firefox/47.0}  
        self.baseURL = https://bjmail.clustertech.com/roundcude/
        self.loginURL = self.baseURL + ?_task=login
    
    def getPage(self):
        self.cookie = cookielib.CookieJar()
        handler = urllib2.HTTPCookieProcessor(self.cookie)
        self.opener = urllib2.build_opener(handler)
        try:
            request = urllib2.Request(url=self.baseURL, headers=self.headers)
            response = self.opener.open(request)
            return response.read()
        except urllib2.URLError, e:
            if hasattr(e, reason):
                print "连接服务器失败,错误原因", e.reason
                return None
                
    def getToken(self):
        page = self.getPage()
        re_token = re.compile(r<form.*?<input.*?value="(.*?)".*?>, re.S)
        token = re_token.search(page)
        if token:
            return token.group(1)
        else:  
            return None

    def login(self):
        data = {"_token":self.getToken(),
                "_task":"login",
                "_action":"login",
                "_timezone":"Asia/Shanghai",
                "_url":"",
                "_user":"zyli",
                "_pass":"1234.qwe"}
        self.postdata = urllib.urlencode(data)
        try:
            request = urllib2.Request(url = self.loginURL,
                                      data = self.postdata,
                                      headers = self.headers)
            response  = self.opener.open(request)
            print response.read()
        except urllib2.URLError, e:
            print e

gs = MyMail()
gs.getToken()
gs.login()

 

 

 

 

 

 

 

 

      

以上是关于如何禁止访问者不通过登录页面而强行进入其他页面的主要内容,如果未能解决你的问题,请参考以下文章

如何配置webconfig避免不通过密码直接登录到页面

如何禁止用户访问 phpMyAdmin 登录页面? [复制]

网页中怎样禁止通过输入url直接访问

通过 cookie 信息实现自动登录

在web.xml中如何实现防止用户非法登录,就是在不经过正常的流程而直接登录某个页面的种种情况,请高手指点

利用session防止用户未经登录而直接访问