yii2 登录重定向后丢失用户身份

2023-12-26

我看过其他类似的问题,而这个问题(页面重定向后 Yii2 用户身份丢失 https://stackoverflow.com/questions/27738175/yii2-user-identity-loss-after-page-redirection)问了几乎相同的问题,没有适用于我的情况的解决方案。

我创建了一个新的身份类,我已经实现了所有必要的方法并实现了 IdentityInterface。请注意,它并不扩展 ActiveRecord,而是扩展我自己的不是从 AR 派生的基本 Model 类。

一切似乎工作正常,我可以登录并正确进行身份验证。我跟踪了代码,可以看到在调用 IdentityInterface::validatePassword() 和 User::login() 后,我的身份类在 Yii::$app->user 中正确设置。

然而,一旦登录成功并且用户被重定向,Yii::$app->user 包含一个空的 IdentityInterface,而不是重定向之前的那个。

在 SiteController::actionLogin() 中,我修改了代码:

return $this->goHome();

to:

$tmp = $this->goHome();
// echo '<pre>';var_dump(Yii::$app->user);echo '</pre>';exit;
return($tmp);

我可以看到 Yii::$app->user 在 return() 语句之前仍然具有正确的身份。

谁能告诉我为什么我会失去我的身份?我已经追踪了我能想到的所有内容:yii\web\Controller、yii\base\Controller、yii\web\Response、站点控制器、yii\web\User 等...

任何帮助将不胜感激。谢谢!


同样的问题,三天后找到解决方案,我它工作了。 我的用户模型是:

namespace app\models;

use Yii;
class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface
{
    public $username;

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'tbl_users';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['name', 'email', 'password'], 'required'],
            [['email'], 'unique'],
            [['role', 'status'], 'integer'],
            [['created', 'last_update'], 'safe'],
            [['name', 'email', 'password'], 'string', 'max' => 250]
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'name' => 'Name',
            'email' => 'Email',
            'password' => 'Password',
            'role' => 'Role',
            'status' => 'Status',
            'created' => 'Created',
            'last_update' => 'Last Update',
        ];
    }
    public function getAuthKey() {

    }

    public function getId() {
        return $this->id;
    }

    public function validateAuthKey($authKey) {

    }

    public static function findIdentity($id) {

    }

    public static function findIdentityByAccessToken($token, $type = null) {

    }
    public static function findByEmail($email)
    {
        return static::findOne(array('email'=>$email));
    }

    public function validatePassword($password)
    {
        return $this->password === $password;
    }
}

我改变:

public static function findIdentity($id) {

}

to:

public static function findIdentity($id) {
    return self::findOne(array('id'=>$id));
}

它对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yii2 登录重定向后丢失用户身份 的相关文章

  • 如何将Stripe支付集成到Yii2中?

    我有以下代码 它运行时没有错误 但它不会将资金插入到 Stripe 服务器上 Stripe 库已正确安装 配置文件
  • 如何验证当前用户 ASP.net mvc Identity

    当用户访问我的网站时 他们会看到登录页面 一旦他们成功登录 他们就可以注销并且其他用户可以登录 但是 如果用户在登录时单击后退按钮 则会转到登录页面 此时新用户无法再登录 我收到防伪令牌错误 我尝试注销任何进入登录页面的用户 我尝试过不同的
  • 如何将 MVC 5 IdentityModels.cs 移动到单独的程序集中

    我想知道是否有人遇到了我在尝试搬家时遇到的问题ApplicationUser进入模型项目 所有其他模型都驻留在其中 包括与用户表相关的模型 我的测试 MVC 5 解决方案由一个 Web 项目和两个类库组成 一个用于数据访问层 DAL 另一个
  • OnValidateIdentity 会话为空 - Mvc Owin

    目前 我在 OnValidateIdentity 中访问 Session 时遇到问题 HttpContext Current Session一片空白 怎么了 我的申请如下 我有 2 个项目 Mvc 与 WebApi 我希望用户在更改密码时注
  • 了解 ASP.Net MVC 中的重定向

    重定向在 ASP Net MVC 中如何工作 我已经复制并修改了来自 Scott Henselman 博客的代码位 http www hanselman com blog TheWeeklySourceCode25OpenIDEdition
  • Symfony 2 登录后重定向

    在 Symfony 2 中 您可以设置注销目标 以便注销后您将被重定向到 main 但是 登录后您将被重定向到 有没有办法为 成功 登录设置目标 firewalls dev pattern profiler wdt css images j
  • 多个域到单个网站

    我有多个域指向同一个网站 FFFF com FFFF ca FFFF org 等 重写 FFFF com 所有传入流量的最佳方法是什么 URL 重写还是 301 寻找最佳实践 这两个将在 htaccess 中处理 对吧 Thanks 在这种
  • 结果身份改变

    我正在使用 TOR 我想知道如何在需要国家 地区的结果节点之间切换 我可以简单地通过 telnet 9051 端口来更改它 例如 telnet localhost 9051 AUTHENTICATE r signal NEWNYM r qu
  • Yii2迁移问题

    我是第一次使用 yii2 我想尝试 yii 迁移 问题 我创建了迁移文件 php yii migrate create new table 文件已创建 然后我将新表详细信息输入到迁移文件中 当我跑步时php yii migrate我收到错误
  • 为什么要打开重定向 URL?

    我一直在浏览 OWASP 前 10 个漏洞 以更深入地了解每种特定类型的漏洞 我已完成最后一项 未经验证的 URL 重定向 我了解这次攻击 我在 OWASP 中读到了有关此类网络钓鱼计划的内容 现在看来这一点是显而易见的 我很难理解为什么这
  • 如果 url 不包含特定目录,则 htaccess 重定向

    使用 htaccess 我需要将所有不包含特定 URL 路径 医疗保健 的 URL 重定向到新域 同时保持原始 URL 不变 Example healthcare domain com anydirectory anything html
  • HTTP 到 HTTPS 301 重定向代码不起作用,显示重定向过多

    我正在为我的网站之一使用 Bluehost 最近 最近 我已将我的网站从 HTTP 迁移到 HTTPS 之后 我使用了不同的代码 包括以下代码 在我的网站上强制使用 HTTPS SSL Rewrite RewriteEngine On Re
  • AD、ADFS 与 LDAP:像我 5 岁一样解释一下

    我没有与 Microsoft 合作 但我很难从概念上理解 AD ADFS 和 LDAP 如何协同工作 假设我有一个需要身份提供者的应用程序 AD 和 LDAP 如何发挥作用 我的谷歌搜索还没有为我提供这些概念的清晰总结 但如果有存在的资源
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • Symfony 2:如果用户具有特定角色,则将用户重定向到页面

    我有一个小问题 我希望无论用户在我的网站上哪里 如果他具有 ROLE DEGRADE 角色 他就会被重定向到特定页面 我该怎么做 我必须使用防火墙 我不想将用户重定向到表单登录 而只是重定向到一个简单的页面 我希望在我的网站上随处可见 而不
  • 如何在点击android中的按钮时重定向到特定的URL?

    我想在点击时将用户重定向到特定的 URLButton在 Android 应用程序中 您可以启动 查看 活动 该活动将是给定 URL 的浏览器 public class HelloWorld extends Activity Override
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 如何在 Dart 中以正确的方式重定向和重新加载?

    在 Dart 中进行重定向和重新加载的首选方法是什么 我们是否只使用 window location href window location href 有几种不同的方法可以处理 URI 更改 每种方法都有自己的用途 当您想要将用户发送到另
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 将 stdout 和 stderr 重定向到带有前缀的单个文件

    我正在编写一个 bash 脚本 需要重定向stdout and stderr我运行到单个文件的命令的输出 在每行前面加上前缀stderr or stdout 因此 有没有一个简单的方法可以做到这一点 from Debian http www

随机推荐