YII 增加登陆认证

YII验证身份值可以设置一个MODEL来做为身份认证登陆的数据来源,这样当一个WEB应用中有两个角色并且都使用ACCESS TOKEN登陆时就会错误的把另一角色列为未认证的用户。

解决方法是修改框架认证部分的代码如下:

1. 在WEB CONFIG中设置另一个TOKEN的名字,注意如果有两种角色,那么必须让他们的TOKEN的名字是不一样的。

‘user‘ => [
            ‘identityClass‘ => ‘app\models\Customer‘,//角色CUSTOMER
            ‘gzhIdentityClass‘ => ‘app\models\GzhAd‘,//角色GZH
            ‘enableAutoLogin‘ => false,//disable the cookie login
        ],

2. 在USER COMPONENT中配合修改一要增加相应的字段名字,这里是$gzhIdentityClass
    public $identityClass;
    public $gzhIdentityClass;

3.在query parameter中要增加token的名字

public $gzhTokenParam = ‘gzhToken‘;

并且还要相应的判断

        //validate the token from 3rd party sever
        $gzhAccessToken = $request->get($this->gzhTokenParam);
        if (is_string($gzhAccessToken)) {
            $identity = $user->loginByGzhAccessToken($gzhAccessToken, get_class($this));//在这里要调取USER COMPONENT中的loginByGzhAccessToken
            if ($identity !== null) {
                return $identity;
            }
        }

4.在USER COMPONENT中要实现3中的loginByGzhAccessToken

    //validate the gzh access token
    public function loginByGzhAccessToken($gzhAccessToken, $type = null)
    {
        $class = $this->gzhIdentityClass;
        $identity = GzhAd::findIdentityByAccessToken($gzhAccessToken, $type);
        if ($identity && $this->login($identity)) {
            return $identity;
        } else {
            return null;
        }
    }

5.在GZH MODEL中也要继承IdentityInterface
并且实现所有接口

时间: 2024-12-13 09:43:00

YII 增加登陆认证的相关文章

Express结合Passport实现登陆认证和Passport现实社交网络OAuth登陆

Express结合Passport实现登陆认证 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的Geek网站!! 关于作者 张丹(Co

spring项目篇5----shiro以及实现登陆认证

接下来做一下,用户的认证登陆以及权限验证,在这里使用shiro,首先来看一下shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 主要功能 三个核心组件:Subject, SecurityManager 和 Realms. Subject:即“当前操作用户”.但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是

Ubuntu下SSH安装及提高SSH登陆认证速度的办法

Ubuntu 下安装 OpenSSH Server 是无比轻松的一件事情,需要的命令只有一条: sudo apt-get install openssh-server (查看返回的结果,如果没有出错,则用putty.SecureCRT.SSH Secure Shell Client等SSH 客户端软件,输入您服务器的 IP 地址.如果一切正常的话,等一会儿就可以连接上了.并且使用现有的用户名和密码应该就可以登录了.) 然后确认sshserver是否启动了:(或用“netstat -tlp”命令)

spring-security 登陆认证之初次探究

首先,希望还对 spring-security框架完全不懂的新手 下载下Git源码. 引入到项目中.这个短文就是边看源码边聊的.也会启动下项目验证自己的推想. spring-security 登陆认证的配置项如下: <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" default-target-url="/index.ht&qu

Flask中如何实现用户登陆认证?

本文和大家分享的主要是使用Flask实现用户登陆认证的相关知识,希望对大家学习Flask有所帮助. 用户认证的原理 在了解使用Flask来实现用户认证之前,我们首先要明白用户认证的原理.假设现在我们要自己去实现用户认证,需要做哪些事情呢? 1. 首先,用户要能够输入用户名和密码,所以需要网页和表单,用以实现用户输入和提交的过程. 2. 用户提交了用户名和密码,我们就需要比对用户名,密码是否正确,而要想比对,首先我们的系统中就要有存储用户名,密码的地方,大多数后台系统会通过数据库来存储,但是实际上

简单的Python登陆认证小程序

使用Python编写登陆认证小程序.用户连续 3 次输入密码错误即锁定用户. ############# start ############### #!/usr/bin/env python import os import sys # os.system('clear') userfile = file('user_id.txt', 'r+') userlist = [] userdict = {} if os.path.isfile("user_id.txt"): pass el

路飞学城14天集训营作业1—登陆认证

作业一:登陆认证基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) 初始版本: 1 # -*- coding:utf-8 -*- 2 # author: heimu 3 4 import os 5 6 user_dic = {"heimu_1":"111111",&qu

从 &amp;quot;org.apache.hadoop.security.AccessControlException:Permission denied: user=...&amp;quot; 看Hadoop 的用户登陆认证

假设远程提交任务给Hadoop 可能会遇到?"org.apache.hadoop.security.AccessControlException:Permission denied: user=..." , 当然,假设是spark over YARN, 也相同会遇到相似的问题,比如: ?An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. : org.apache.hadoop.

Python开发入门14天集训营&#183;第1章Python基础语法-编写登陆认证程序

作业题目: 编写登陆认证程序 作业需求: 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) 1 #!/usr/bin/env python 2 # -*- coding=utf-8 -*- 3 """ 4 @author:Wllen 5 @file:user_pass.py 6