thinkphp中与subkey进行登录验证例子

使用thinkphp做一个用户登录功能是一个很简单的功能,最近公司的一个项目需要将thinkphp结合usbkey进行登录,(也就是需要插入usbkey进行登录,否则不放进行登录),开始的时候使用php+驱动(USB驱动)读取usbkey实现登录。在本地可以实现登录,上传到服务器上就不能登录(其原因就是php只能检测本地是否安装了usbkey的驱动,却不能检测其他客户端是否安装了驱动。)后来使用js来实现。这次可以实现登录。
实现的步骤:
1.安装USBKEY的驱动(本代码只使用飞天诚信USBKEY)
2.将USBKEY的HID(通过软件获取)放到数据库中。
3.利用js将usbkey的HID读取出来放到隐藏域中,通过from表单提交到后台,与数据库中的HID进行比对。相同就可以登录,不相同返回提示信息。
前台代码:

 代码如下 复制代码

    <form name="form1" id="form1" enctype="multipart/form-data" method="post" action="/Login/viplogin/" onsubmit="return v_login()">
    <input type="hidden" name="hidd" value="" id="hidd"/>
    <input type="hidden" value="1" name="vip"/>
    <input class="yhtext" type="text" id="vuname" name="uname" placeholder="用户名" />
    <input class="yhtext" type="password" id="vupwd" name="upwd" placeholder="密码" />
    <input type="submit" value="登录" />
    </form> 
   
    <script>
    var R3;
    function Validate()
    {       
            //判断是否插入U盾
            var ret;
            R3 = document.getElementById("ROCKEY3");
            R3.VendorID = "00000000"; //Find之前需要设置客户ID
            ret = R3.R3_Find();
            if( ret != 0 )
            {
               alert("请插入U盾");
               return false;
            }
            //
            var open;
            R3.index = 1; //调用R3_Open接口之前需要,先设置index,表示打开第几把锁,从1开始
            open = R3.R3_Open();
            if( ret != 0 )
            {
               alert("开锁失败");
               return false;
            }
            //读取硬件ID
            var HID;
            HID = R3.R3_GetHardID();
            if (HID != 0)
            {
              alert("读取HID失败");    //读出的硬件序列号在HardID中
              return false;
            }else{
                document.getElementById("hidd").value=R3.HardID;
            }
    }

    function v_login(){
        if($("#vuname").val()==''||$("#vupwd").val()==''||$("#vverify_code").val()==''){
                        alert("填写完整方可登陆");
                        return false;
                    }
        return Validate();           
    };
    </script>

后台代码:
基本逻辑就是前台传过来的username、usbkey的HID、pwd进行验证。

其实每个网站多有自己的业务逻辑,这种方法只是个参考。具体实现方法还有很多种。例如:讲用户密码写入到usbkey中,只有插入USBKEY才能获取密码进行登录。
或者写入一些特殊的字符进行验证。  

时间: 2024-10-14 13:12:18

thinkphp中与subkey进行登录验证例子的相关文章

thinkPHP中create方法与令牌验证实例浅析_php实例

本文实例讲述了thinkPHP中create方法与令牌验证.分享给大家供大家参考,具体如下: thinkPHP的create方法与令牌验证主要是涉及表单的安全性. 代码如下: <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action{ public function index(){ $this->display(); } //一般用户在网站完成信息的添加修改--但是有意外,用户吧网页另存为到本地了,然后在这当中模拟了很多组数据,然后

PHP中session共享和登录验证的实现方法

我们先来讲述一下利用session来登录 登录页面05.php的代码如下:  代码如下 复制代码 <?php  session_start() ;                    //初始化session if (isset ($_SESSION['shili'])){ header ("Location:shili.php") ;     //重新定向到其他页面 exit ; }  ?> <script language="javascript&qu

linux中expect实现自动登录的例子

使用expect实现简单自动登录,从网上看了几个脚本不错,借鉴一下 NO.1 #!/bin/sh auto_login_ssh(){ expect -c " set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;" } auto_login_ssh password user@hostname StrictHos

asp.net中mvc验证用户登录的例子

因此一般我都是把AcountController的相关的东西都删了,一步一步自己来重建自己的登陆模块. MVC提供了四种Filter(钩子),用于在Action执行之前或者之后,我们能够做一些事情,比如说判断有没有登录,比如说判断有没有权限. IAuthorizationFilter:在所有Filter和Action执行之前执行 IActionFilter:分别在Action执行之前和之后执行. IResultFilter:分别在Action Result执行之后和之前 IExceptionFi

ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name'];//$password=$_POST['password'];  ---这个注册页面传过来的POST值      下面用了自动穿件create方法就可以不用这个,会行动绑定$user =M('User');$User->create();   //会将传过来的$_POST数据对应到数据库的字段$user->add();   //就可以直接写入 2:自动验

ThinkPHP中的create方法与自动令牌验证实例教程_php实例

本文实例形式展示了ThinkPHP中的create方法与自动令牌验证的实现方法,具体步骤如下: 一.数据表结构 user表结构如下: id username password 二.view模板部分 \aoli\Home\Tpl\default\User\create.html页面如下: <form action="__URL__/addit" method="post"> <input type="text" name=&quo

nutz框架中如何实现登录验证

一.nutz介绍      Nutz是对于Java程序员来说,除SSH之外的另一个选择.当然,它是开源的,并且是完全免费的.同时也是商业友好的(Licensed under the Apache License, Version 2.0).主页如下:http://www.nutzam.com/ 二.session简单介绍      大家都知道http是无状态的,即:同一个浏览器发送多个请求,服务端并不知道这些请求是来自于同一个浏览器.所以为了使服务端知道这些请求都是来自于同 一个浏览器,用到了s

Shiro安全框架入门篇(登录验证实例详解与源码)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和JavaEE项目中都可以使用.它主要用来处理身份认证,授权,企业会话管理和加密等.Shiro的具体功能点如下: (1)身份认证/登录,验证用户是不是拥有相应的身份:  (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限:即判断用户是否能做

ThinkPHP中的RBAC

一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理. 在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收.角色与角色的关