精华内容
下载资源
问答
  • 访问:http://IP/zabbix/(1) You should see the first screen of the frontend installation wizard. (2) 检查环境 查看到几处不符合要求,需修改该PHP文件配置文件参数:# vim /etc/...

    访问:

    http://IP/zabbix/

    (1) You should see the first screen of the frontend installation wizard.

    20190306160035480367.png

    (2) 检查环境

    20190306160036041890.png

    查看到几处不符合要求,需修改该PHP文件配置文件参数:

    # vim /etc/php.ini

    post_max_size = 16M

    max_execution_time = 300

    max_input_time = 300

    date.timezone = Asia/Shanghai

    然后重启httpd和mysql,不重启mysql下面sql连接时还是会报错。

    [[email protected] ~]# systemctl restart httpd.service

    [[email protected] ~]# service mysqld restart

    重新访问,全部依赖都通过:

    20190306160036221578.png

    (3) 输入之前在MYSQL后台设置的zabbix数据库信息:

    DBName=zabbix

    DBUser=zabbix

    DBPassword=wisedu

    20190306160036342671.png

    报错:

    20190306160036465718.png

    解决:

    [[email protected] ~]# mkdir /var/lib/mysql

    [[email protected] ~]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

    点击下一步,还是报错:

    20190306160036570211.png

    解决:

    mysql> grant all on zabbix.* to ‘zabbix‘@‘console‘ identified by ‘wisedu‘;

    mysql> flush privileges;

    如果以上方法试过后,还报下面的错误:

    Error connecting to database: Can‘t connect to MySQL server on ‘‘114.55.29.246‘‘

    请检查SELinux是否关闭。

    [[email protected] ~]# /usr/sbin/sestatus -v

    20190306160036660054.png

    关闭SELinux:

    [[email protected] ~]# setenforce 0

    [[email protected] ~]# vim /etc/sysconfig/selinux

    20190306160036731343.png

    20190306160036826070.png

    (4) 输入zabbix服务器端的详细信息

    20190306160036964742.png

    (5) 检查一下设置情况

    20190306160037084859.png

    (6) 下载配置文件,并把它放置在/var/www/html/zabbix/conf/ 目录下

    20190306160037244039.png

    Alternatively, you can install it manually:

    Download the configuration file

    Save it as "/var/www/html/zabbix/conf/zabbix.conf.php"

    20190306160037337789.png

    [[email protected] conf]# cd /var/www/html/zabbix/conf/

    [[email protected] conf]# chown zabbix.zabbix zabbix.conf.php

    (7) 点击Finish

    20190306160037421773.png

    (8) Zabbix frontend is ready! The default user name is Admin, password zabbix.

    20190306160037568257.png

    展开全文
  • web.xml [code="java"] AuthFilter com.acconsys.capital.util.AuthFilter excludeUrl login.action,loginSubmit.action AuthFilter *.action [/code] public ...
    web.xml

    <filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.acconsys.capital.util.AuthFilter</filter-class>
    <init-param>
    <param-name>excludeUrl</param-name>
    <param-value>login.action,loginSubmit.action</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>




    public class SystemConstants {

    public static final String CURRENT_USER = "current_user";

    }

    AuthFilter.java


    /*******************************************************************************
    * @project: Capital501
    * @package: com.acconsys.capital.util
    * @file: AuthFilter.java
    * @created: 2014-8-15
    * @purpose:
    *
    * @version: 1.0
    *
    * Revision History at the end of file.
    *
    * Copyright 2014 AcconSys All rights reserved.
    ******************************************************************************/

    package com.acconsys.capital.util;

    import java.io.IOException;
    import java.io.PrintWriter;

    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;

    import com.acconsys.capital.common.SystemConstants;

    public class AuthFilter implements Filter {

    private FilterConfig filterConfig = null;
    private String sysUrl;

    /**
    * @see Filter#destroy()
    */
    public void destroy() {
    this.filterConfig = null;
    }

    /**
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
    */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    try {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    if(sysUrl == null) {
    StringBuffer requestURL = httpRequest.getRequestURL();
    String contextPath = httpRequest.getContextPath();
    sysUrl = requestURL.substring(0, requestURL.indexOf(contextPath)) + contextPath;
    }

    if(isExcludeUrl(httpRequest)) {
    chain.doFilter(request, response);
    return;
    }

    HttpSession session = httpRequest.getSession(false);
    if (session == null || session.getAttribute(SystemConstants.CURRENT_USER) == null) {
    PrintWriter out = httpResponse.getWriter();
    out.write("<script>window.top.location.href='" +httpRequest.getContextPath()
    + "/login.action'</script>");
    }else{
    chain.doFilter(request, response);
    }
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }

    private boolean isExcludeUrl(HttpServletRequest request) {
    String contextPath = request.getContextPath();
    String excludeUrl = filterConfig.getInitParameter("excludeUrl");
    String requestUri = request.getRequestURI();

    int questionIndex = requestUri.indexOf("?");
    if (questionIndex > 0) {
    requestUri = requestUri.substring(0, questionIndex);
    }
    String[] actions = excludeUrl.split(",");
    for (int i = 0; i < actions.length; i++) {
    if (requestUri.equals(contextPath + "/" + actions[i].trim())) {
    return true;
    }
    }
    return false;
    }

    /**
    * @see Filter#init(FilterConfig)
    */
    public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    }

    }


    /*******************************************************************************
    * <B>Revision History</B><BR>
    * [type 'revision' and press Alt + / to insert revision block]<BR>
    *
    *
    *
    * Copyright 2014 AcconSys All rights reserved.
    ******************************************************************************/


    展开全文
  • webapi接口访问验证是否登陆的解决方案!每次访问接口都需要验证用户是否登陆
  • webapi 访问权限

    千次阅读 2018-06-05 15:44:36
    webapi不需要登陆,只需要知道方法就能直接访问,这个就比较郁闷了。因为之前也没有做过权限控制的问题,百度搜到了不少,但是都不能用,只能自己解决了,后来终于找到了一种可以实现的方法,只是不知道好不好,希望...

           最近在做一个项目,前台使用的是angularjs,后台使用的是webapi。webapi不需要登陆,只需要知道方法就能直接访问,这个就比较郁闷了。因为之前也没有做过权限控制的问题,百度搜到了不少,但是都不能用,只能自己解决了,后来终于找到了一种可以实现的方法,只是不知道好不好,希望有人看到能给个答案。实现方法如下:

          1、根据登陆信息(用户名,密码之类的)去数据库查询到用户信息,以及用户所有的权限(权限由在增加用户的时候分配)。

          2、建立FormsAuthenticationTicket,并把用户信息保存到缓存中,并返回登陆结果及一个token(唯一标识),userRole是一个需要返回的信息实体类。

              FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
                    2,
                    list[0].USERID,
                    DateTime.Now,
                    dateCookieExpires,
                     false,
                    new JavaScriptSerializer().Serialize(userRole)-------权限(后面用到)
                    );
                string encTicket = FormsAuthentication.Encrypt(ticket);
        HttpRuntime.Cache.Add(userRole.TOKEN, encTicket, null, DateTime.Now.AddDays(7), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Default, null);------------保存到缓存中,也可以存到数据库

                return Json(userRole);

        

          3、把token保存到本地       localStorage.setItem("token",userRole.TOKEN);

          4、创建一个全局注入器,每次访问的时候,可以自动在header中带入token

               

    .factory("httpInjector",['$q','$injector',function($q,$injector){
        var httpInterceptor = {
            'responseError' : function(response) {
                // ......
                return $q.reject(response);
            },
            'response' : function(response) {
                if (response.status == 21000) {
                    // console.log('do something...');
                }
                return response || $q.when(response);
            },
            'request' : function(config) {
                config.headers = config.headers || {};
                if (localStorage.token) {
                    config.headers.token = localStorage.getItem("token");
                    // config.headers['X-Access-Token'] = $localStorage.token;
                };
    
                return config || $q.when(config);
    
                return config;
            },
            'requestError' : function(config){
                // ......
                return $q.reject(config);
            }
        };
        return httpInterceptor;
    

    }])

    5、把注入器配置到config中

    .config(["$ionicConfigProvider",'$httpProvider', function ($ionicConfigProvider,$httpProvider) {
        $httpProvider.interceptors.push('httpInjector');
    }])

     6、创建一个过滤器TestFilter,继承AuthorizationFilterAttribute,重写方法

             public override void OnAuthorization(HttpActionContext actionContext)-------重写授权方法        {    

            if (HttpContext.Current.Request.Headers["token"] != null)        

        {         

           string token = HttpContext.Current.Request.Headers["token"].ToString();---------获取前台传过来的token                      if (HttpRuntime.Cache.Get(token) != null)

                    {

                      ------------根据token到缓存中取出用户信息。

                  FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(HttpRuntime.Cache.Get(token).ToString());

                        if (ticket != null)                 

             {                   

         USER_ROLE userRole = new JavaScriptSerializer().Deserialize<USER_ROLE>(ticket.UserData);           

                 string[] roles = new string[] { };--------取出用户权限组成数据                

            IIdentity identity = new FormsIdentity(ticket);-------------标识用户的身份验证的类型              

              IPrincipal principal = new GenericPrincipal(identity, roles); ---------当前用户标识                        HttpContext.Current.User = principal;-----------  为当前 HTTP 请求设置安全信息。                    

                        }           

                    }       

                 }

            }

         7、把自定义的过滤器注册到webapiconfig中,注册后每次webapi请求会先经过过滤器

                 config.Filters.Add(new TestFilter());

    8、方法或控制器上添加权限限制   [Authorize(Roles = "TEST")]

    到此完成,没有此权限的用户就无法访问此方法。

    为什么要返回token到前台,然后把用户信息保存到缓存中呢?是因为对于webapi来说,每次的访问都是一个新的请求,

    之前的登陆信息在下次访问的时候就请求不到了,cookie和session也访问不到,所以信息保存到了缓存中(保存到数据库也可以

    但是请求太频繁)。根据token,找到对应的用户信息,取出用户信息后赋给当前请求用户,当前用户才有访问权限。

       

    展开全文
  • 1、防护软件/硬件Waf/Web服务器限制单IP固定时间段的登陆频率 1.1 作用 通过WAF可以实现某一个IP访问频率过高时则将此IP加入黑名单一段时间 通过Nginx等Web服务器可以实现限制单IP固定时间段的登陆频率,也就是...

    0、写在前面

    本来只想做个验证码的功能实现,后来想想光要验证码也不行,干脆写整个防爆破的实现吧

     

    1、防护软件/硬件Waf/Web服务器限制单IP固定时间段的登陆频率

    1.1 作用

    通过WAF可以实现某一个IP访问频率过高时则将此IP加入黑名单一段时间

    通过Nginx等Web服务器可以实现限制单IP固定时间段的登陆频率,也就是限制流量

    可以防爆破的同时一定程度上防止DDos攻击

    1.2 实现

     1 http{
     2     ...
     3 
     4     #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
     5     #以$binary_remote_addr 为key,限制平均每秒的请求为20个,
     6     #1M能存储16000个状态,rete的值必须为整数,
     7     #如果限制两秒钟一个请求,可以设置成30r/m
     8 
     9     limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
    10     ...
    11     server{
    12         ...
    13         location {
    14             ...
    15 
    16             #限制每ip每秒不超过20个请求,漏桶数burst为5
    17             #brust的意思就是,如果第1秒、2,3,4秒请求为19个,
    18             #第5秒的请求为25个是被允许的。
    19             #但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
    20             #nodelay,如果不设置该选项,严格使用平均速率限制请求数,
    21             #第1秒25个请求时,5个请求放到第2秒执行,
    22             #设置nodelay,25个请求将在第1秒执行。
    23 
    24             limit_req zone=allips burst=5 nodelay;
    25             ...
    26         }
    27         ...
    28     }
    29     ...
    30 }
    31  
    nginx.conf

    1.3 问题

    攻击者可以通过代理池的方式来绕过

     

    2、WebApp限制单用户固定时间段的登陆频率

    2.1 作用

    极大的拖慢爆破的速度,通常一小时错误6次就要锁账号

    而且可以被锁定时发邮件提醒用户(感觉最多也就是让人心里有个数,但用没什么卵用)

    2.2 实现

    用户名密码等信息为了简化都保存在字典中,正常都应在数据库中

     1 # -*- coding: utf-8 -*-
     2 from flask import Flask,render_template,request,flash,redirect,url_for
     3 import datetime
     4 
     5 app = Flask(__name__)
     6 app.secret_key = 'zz'
     7 
     8 user_dict = {
     9     'admin':{
    10         'username': 'admin',
    11         'password': 'admin',
    12         'count': 0,
    13         'last_time': '',
    14         'new_time': '',
    15         'locked': False,
    16     },
    17     'test': {
    18         'username': 'test',
    19         'password': 'test',
    20         'count': 0,
    21         'last_time': '',
    22         'new_time': '',
    23         'locked': False,
    24     }
    25 }
    26 
    27 
    28 
    29 @app.route('/',methods=['POST','GET'])
    30 def hello_world():
    31     if request.method == 'POST':
    32         username = request.form.get('username')
    33         password = request.form.get('password')
    34         #验证用户是否存在,存在则继续,不存在则返回用户不存在
    35         if user_dict.get(username):
    36             #验证用户是否被锁
    37             if user_dict[username]['locked']:
    38                 #验证被锁时间是否达到3600秒,达到则用户登陆计数清零,锁定状态变为未锁定
    39                 if (datetime.datetime.now()-user_dict[username]['last_time']).seconds>3600:
    40                     user_dict[username]['count'] = 0
    41                     user_dict[username]['locked'] = False
    42                     flash('you are unlocked')
    43                     return redirect(url_for('hello_world'))
    44                 flash('you are locked')
    45                 return redirect(url_for('hello_world'))
    46             else:
    47                 if username==user_dict[username]['username'] and password==user_dict[username]['password']:
    48                     return 'ok'
    49                 else:
    50                     if user_dict[username]['count'] == 0:
    51                         user_dict[username]['count']+=1
    52                         user_dict[username]['last_time'] = datetime.datetime.now()
    53                         user_dict[username]['new_time'] = datetime.datetime.now()
    54                         flash('password is error')
    55                     elif user_dict[username]['count'] == 6:
    56                         user_dict[username]['new_time'] = datetime.datetime.now()
    57                         user_dict[username]['last_time'] = datetime.datetime.now()
    58                         user_dict[username]['locked'] = True
    59                         flash('you tried 6 times and you are locked 3600 seconds')
    60                     else:
    61                         user_dict[username]['count'] += 1
    62                         user_dict[username]['last_time'] = user_dict[username]['new_time']
    63                         user_dict[username]['new_time'] = datetime.datetime.now()
    64                         flash('password is error')
    65                     return redirect(url_for('hello_world'))
    66         else:
    67             flash('username errors')
    68             return redirect(url_for('hello_world'))
    69     return render_template('index.html')
    70 
    71 
    72 
    73 
    74 if __name__ == '__main__':
    75     app.run()
    app.py
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <form action="" method="post">
     9     username: <input type="text" name="username"><br>
    10     password: <input type="password" name="password"><br>
    11     <input type="submit"><label>count:{{ count }}</label>
    12 </form>
    13 <hr>
    14     {% for msg in get_flashed_messages() %}
    15     <p>{{ msg }}</p>
    16     {% endfor %}
    17 </body>
    18 </html>
    index.html

    2.3 问题

    可以故意输错密码让原账户登陆不了,造成原用户也无法使用

     

    3、扭曲的图片验证码

    3.1、作用

    为了防止重放攻击

    不能每次post和get都改变的验证码没有意义

    3.2、实现

    验证码的生成、获取、更新、核对全部在后端进行

    这里为了简化用户名密码没有加密保存在数据库中,验证码也没有生成图片显示

     1 from flask import Flask,render_template,request,session,flash,redirect,url_for
     2 import random
     3 
     4 app = Flask(__name__)
     5 app.secret_key = 'zz'
     6 
     7 user_dict = {
     8     'username':'admin',
     9     'password':'admin',
    10 }
    11 
    12 check_code_now = {
    13     'check_code':''
    14 }
    15 
    16 def get_code():
    17     ascii_num = [48,49,50,51,52,53,54,55,56,57]
    18     ascii_chr1 = [i for i in range(65,91)]
    19     ascii_chr2 = [i for i in range(97,123)]
    20     ascii = ascii_chr1+ascii_chr2+ascii_num
    21     random_pool = [chr(i) for i in ascii]
    22     check_code = random.choice(random_pool)+random.choice(random_pool)+random.choice(random_pool)+random.choice(random_pool)
    23     check_code_now['check_code'] = check_code
    24     return check_code
    25 
    26 
    27 @app.route('/',methods=['POST','GET'])
    28 def hello_world():
    29     if request.method == 'POST':
    30         username = request.form.get('username')
    31         password = request.form.get('password')
    32         check_code = request.form.get('check_code')
    33         if check_code_now.get('check_code')!= check_code:
    34             flash('check_code error')
    35             get_code()
    36             return redirect(url_for('hello_world'))
    37         if username == user_dict.get('username') and password == user_dict.get('password'):
    38             return 'ok'
    39         else:
    40             flash('username or password error')
    41             get_code()
    42             return redirect(url_for('hello_world'))
    43     check_code = get_code()
    44     return render_template('index.html',check_code = check_code)
    45 
    46 
    47 
    48 
    49 if __name__ == '__main__':
    50     app.run()
    app.py
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <form action="" method="post">
     9     username: <input type="text" name="username"><br>
    10     password: <input type="password" name="password"><br>
    11     checkcode:<input type="text" name="check_code"><label style="color: red">{{ check_code }}</label><br>
    12     <input type="submit">
    13 </form>
    14 <hr>
    15     {% for msg in get_flashed_messages() %}
    16     <p>{{ msg }}</p>
    17     {% endfor %}
    18 </body>
    19 </html>
    index.html

    3.3、问题

    不要将验证码保存在session中

    不管是Flask(将session加密存储在浏览器cooikes中),还是Django(将session保存在数据库中,cooikes只保存sessionID)

    重放攻击中每次的session都不变,去session中核对验证码每次都是不变的,那验证码将没有意义

    另外扭曲的验证码会让用户都看不明白,而且某些图片识别还是能识别、、

     

    4、IP段黑白名单

    4.1 作用

    通过Web服务器(Nginx等)实现

    黑名单可以把某些IP直接Ban掉

    对内网的WebApp白名单很有用

    4.2 实现

    1 location / {
    2   deny    192.168.1.1;
    3   allow   192.168.1.0/24;
    4   allow   10.1.1.0/1
    5 }
    nginx.conf

    4.3 问题

    有些用户不知情的情况下被人当肉鸡,然后被黑名单Ban掉,影响正常使用、、

     

    5、写在最后

    还是那句老话,安全没有银弹

    这些措施加在一起也并不能防止代理池+图片识别工具,但可以大幅度增加爆破的时间

    然而很可能对用户正常使用产生影响、、

    转载于:https://www.cnblogs.com/cx59244405/p/10410746.html

    展开全文
  • 1、WebServices返回的JSON结果 { "Code": 1, "Result": [{ "ID": "2", "UserName": "123", "UserPwd": "123", "IsEnable": "0" }] } 2、访问WEB服务代码 1 im...
  • 如何输入一个javaweb工程名,直接访问到login.jsp <welcome-file>login.html</welcome-file> <welcome-file>login.htm</welcome-file> <welcome-file>login.jsp ![图片说明]...
  • web平台登陆报错

    2019-04-11 17:59:28
    1、访问报网络错误,原因是h5文件的url地址写错(端口需要开启) 2、访问报操作失败,原因是被访问的base服务的服务器防火墙拦截,关闭防火墙
  • import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //使用WebMvcConfigurerAdapter可以来...
  • 在com.wsc.component下创建LoginHandlerInterceptor,用于登陆检查,防止未登录而访问页面 package com.wsc.component; import org.springframework.web.servlet.HandlerInterceptor; import org.spring...
  • web后台访问顺序

    2015-04-02 11:00:50
    登入首页后,进行页面请求,每个请求访问的顺序是:用户过滤器(检测是否登陆)、权限过滤器(再次检测权限)、返回访问结果; 实质后台访问顺序是:jsp页面——Struts的xml配置文件——Action的方法——Spring注解...
  • 请求重定向到此目标:https://mail.contoso.com/owa,勾选仅将请求重定向到此目录(非子目录)中的内容默认设置下,Exchange使用https://mail.dota.com/owa访问邮箱。我们可以通过修改IIS设置,当输入...
  • 在浏览器中访问http://192.168.1.100,正常是打开MB-Two芯片的web 登陆界面,但是事与愿违,打开的是帮助界面。解决办法:用串口调试助手,波特率默认是115200,连接过去。在命令行中输入:$PASHQ,VER 回显:应该...
  • 其原理是用户登陆qq后,获得code码,web后台携带code信息访问qq服务器,获得openid(其为qq用户登陆qq的唯一id),将此openid与web用户表进行关联。以后每次采用qq登陆方式访问web页面时,查询web用户表的openid是否...
  • web登录注册,在Myeclipse里打开,可以进行mysql数据访问
  • 二、 用jRegistry 来操作注册表 jRegistry它是用JNI来封装WINDOWS注册表API,方便了java开发者访问windows注册表。首先介绍一下jRegistryKey.jar和jRegistryKey.dll,这两个文件是使用jRegistry来操作注册表所必需...
  • 1、不使用过滤器实现,在需要拦截的页面通过session判断是否登陆,若没登陆则跳转到login.jsp页面: &amp;amp;lt;% Admin admin = (Admin)session.getAttribute(&amp;quot;admin&amp;quot;); if...
  • 华三交换机 S3100 web登陆设置方法

    万次阅读 2018-05-02 08:49:45
    华三 交换机 S3100 web登陆设置分类:系统运维From:http://digdeeply.org/archives/0307705.html首先要通过console口设置访问IP,如下:&lt;H3C&gt;sys[H3C] interface Vlan-interface 1(进入管理VLAN)...
  • 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中src为 https://login.weixin.qq.com/qrcode/Yd5dz5xUnw=="   而我们每次刷新都会生成一...
  • 权限管理都是针对用户进行,因此前置条件是用户登陆到系统中,最终有一个身份,最终根据这个身份来管理。所以这类权限管理应该包含如下实体。 资源:我们系统中所包含的各种功能(系统接口、链接等)。例如查看系统...
  • 我们登陆了一个网站之后我们发现,有的用户可以登陆进一个会员专享页面,而非会员用户无法登陆,这时如何做到的呢,接下来我们进行演示: 首先我们进入主配置文件进行修改: 注意:/var/www/html永远都是...
  • 本项目基于tensorflow机器学习,实现web端人脸识别登陆,人脸注册。提供手机端页面(face_login_app)和网页端页面(vue_element-admin)。用户注册后进行一次机器学习,将用户的面部特征加入到模型中。软件架构...
  • 利用LWP这个包,我们可以很方便的在我们的perl脚本里面访问外部的Web服务器上面的资源。 为什么要用LWP? 现在的网站应用越做越复杂,要想简单的写一个Socket telnet 去用 GET 指令获取资源简直是不可能的,特别...
  • 1,一个线上的可以通过域名访问的已经备案的拥有文件控制权限的web站点 2,在QQ互联https://connect.qq.com创建一个网站应用,获得APPID,APPKEY和填写授权回调地址REDIRECT_URI开始开发 1,请求用户授权,获取...
  • 之前访问一切访问正常 今天突然登录不了 输入任何用户名密码都无效; 解决方案 WEBMAIL安装的 硬盘分区 设置 SYSTEM USERS权限为完全控制 解决 设置完之后 记得要重启下IIS 转载于:...
  • web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能。 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先写一个登录权限过滤类--LoginFilter...
  • 开发一个前后端分离的Web系统,活跃用户可以一直访问系统资源 示例中,活跃用户能够一直访问系统资源,工作过程如下 用户输入账号密码登陆 活跃用户持续访问系统资源 非活跃用户重新操作时会重定向到登陆页面 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,216
精华内容 886
关键字:

web登陆访问