在HMVC结构中使用Ion Auth作为单独的模块

如何解决在HMVC结构中使用Ion Auth作为单独的模块

| 我对将ion auth用于在HMVC模式下运行的我的项目感兴趣。该应用程序是用Codeigniter编写的。 我遇到的问题是,将ion auth放置在/ app / modules / auth文件夹中后,当我尝试访问模块时,出现以下错误:   HTTP错误500(内部服务器错误):   服务器尝试满足请求时遇到了意外情况。 请在这里帮助我,我确定我遇到了某种配置/路径问题,但无法确定在哪里。 我只是从github下载ion_auth文件,并将提取的文件原样放置在模块文件夹中,所以我删除了所有用于加载库(如数据库,会话)的行,因为我已使用config自动加载它们。但是我离开了ion_auth库的加载。 在模块文件夹modules / auth中,我具有与模块特定的config,library等文件夹类似的应用程序结构。 让我知道我一定做错了什么,如果有任何运气,我将继续搜索并解决此问题并发布。     

解决方法

        尝试这个: 获取:codeigniter.zip(CI2.0) 解压缩,确保其正在运行,设置config / config.php 获取模块化扩展:HMVC 安装-将MY_Loader和MY_Router复制到/ core,将MX复制到第三方文件夹 不要复制MY_Controller-这是用于模块化分隔而不是扩展 获取Ion_auth 为Ion_auth安装SQL 将Ion_auth放入模块文件夹/ application / modules / users 在config / routes.php中添加路由:
$route[\'auth/(.*)\'] = \'users/auth/$1\';
自动加载ion_auth-
$autoload[\'libraries\'] = array(\'database\',\'session\',\'users/ion_auth\');
在modules / users / library / ion_auth.php中编辑以下路径:
$this->ci->load->config(\'users/ion_auth\',TRUE);
$this->ci->load->library(\'email\');
$this->ci->load->library(\'session\');
$this->ci->lang->load(\'users/ion_auth\');
$this->ci->load->model(\'users/ion_auth_model\');
    ,我得到了CI 2.1 + Modular Extensions 5.4 + Ion Auth 2的所有功能。 由于我实际上并没有看到任何确切的信息,而且确实看到了很多东西,比如路由和诸如此类的东西,这些东西我无法按照他们的工作方式进行,所以我决定分享我确实做到了。 刚开始我在为此苦苦挣扎,但是后来我不得不坐下来思考发生了什么。 在那之后,实际上非常简单,只有几个陷阱…… 我为使ION AUTH与CodeIgniter + MX HMVC一起使用而采取的步骤 安装CodeIgnter(我实际上使用的是我正在研究的现有项目,因此它不是全新的安装。我删除了“ index.php \”,并且已经安装了HMVC的推荐方法。无论如何,这与Ion Auth有关。 ) 获取最新版本的Ion Auth。 将其解压缩,然后将结果目录重命名为“ 4”,而不是在ѭ3中安装Ion Auth。将其放在
application/modules
中得出
application/modules/auth
。 运行Ion Auth \的sql设置表。 在“ 7”中,将行更新为:
$autoload[\'libraries\'] = array(\'database\',\'session\');
modules/auth/libraries/Ion_auth.php
中将
__construct
中的行更新为:
$this->ci->load->config(\'auth/ion_auth\',TRUE);
$this->ci->load->library(\'email\');
$this->ci->load->library(\'session\');
$this->ci->lang->load(\'auth/ion_auth\');
$this->ci->load->model(\'auth/ion_auth_model\')
modules/auth/models/ion_auth_model.php
中将
__construct
中的行更新为:
$this->load->config(\'auth/ion_auth\',TRUE);
$this->load->helper(\'cookie\');
$this->load->helper(\'date\');
$this->load->library(\'session\');
$this->lang->load(\'auth/ion_auth\');
更改
auth
控制器(
modules/auth/controllers/auth.php
)以扩展
MX_Controller
,而不是默认的
CI_Controller
。 现在,在
auth.php
中,确保将所有
$this->data
更改为
$data
-(请确保在下面阅读有关内容!!)。 将
modules/auth/views/auth
中的文件和目录移动到
modules/auth/views
中,得到的
modules/auth/views
没有较低的
auth
目录-(请确保在下面阅读有关内容!!)。 将routes.php文件添加到modules / auth / config并添加以下行:
$route[\'auth/(:any)\'] = \"auth/$1\";
现在,转到
http://yoursite/auth
,一切都应该很好! 陷阱 首先,不要在AUTO7ѭ文件中自动加载库或模型。用
$this->load->library(\"whatever\")
在模块中明确显示它们,等等。 那一个让我很困扰。 我忘了提一下,在当前安装中,我已经从URL中删除了index.php,并且在安装的基础上有一个.htaccess文件。如果不起作用,则可能是这里的RewriteBase有问题。这是我使用的.htaccess文件:
## Set up mod_rewrite
<IfModule mod_rewrite.c>
Options +MultiViews +FollowSymLinks
DirectoryIndex index.php index.html

# Enable Rewrite Engine
# ------------------------------
RewriteEngine On

# UPDATE THIS TO POINT TO where you installed this FROM YOUR DOC ROOT.
# If this is in the DOC ROOT,leave it as it is
#---------------------
RewriteBase /

# In case your hosting service doesn\'t add or remove \'www.\' for you,you can
# do it here by uncommenting and updating the \'Rewrite*\'s below.
#
# Add or remove \'www.\'  Whichever you prefer.  
# This one removes the \'www.\' which seems to be the favorable choice these days. 
# ------------------------------
#RewriteCond %{HTTP_HOST} ^www.<sitename>.com
#RewriteRule (.*) http://<sitename>.com/$1 [R=301,L]

# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\\.php/*(.*) $1$2 [R=301,L]

# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteRule modules/(.+)/controllers/(.+)\\.php$ /index.php?/$1/$2 [L,R=301]
RewriteRule controllers/(.+)\\.php$ /index.php?/$1 [L,R=301]

RewriteCond $1 !\\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
================================ 当我更新modules / auth / controllers / auth.php以扩展MX_Controller而不是CI_Controller时,此后出现了一系列错误。这些错误中的第一个是:
    A PHP Error was encountered

    Severity: Notice

    Message: Undefined property: CI::$data

    Filename: MX/Controller.php
为解决此错误,我将“ 19”控制器中的所有“ 20”更改为“ 21”。 解决此问题后,当我转到
auth
时,会收到如下错误:
Unable to load the requested file: auth/login.php
显然,它无法在自己的ѭ37目录中找到视图文件。啊考虑后,这并非完全正确。原因是因为它试图找到
module/file_to_view
,而
file_to_view
应该在
views
中!不在
auth/views/auth
!因此,我们需要将所有内容从
auth
目录移到
views
目录中! 之后,一切正常!我可以在其他模块中交叉加载模型,库和控制器,并且可以在视图和其他所有模块中执行Modules :: run()! 我希望这可以帮助其他人。祝好运!     ,        我看不出有什么理由不起作用。 检查pyrocms 他们在hmvc中使用ionauth。 如果您无法正常工作, 只需将文件上传到普通ci目录中,然后检查其是否正常工作。     ,        这是我按照ciuser的指南进行的操作,但有一些更改: 全新安装Codeigniter。设置config.php,database.php等 安装模块化扩展:     将third_party / MX移至CI / application / third_party。     将core / MY_Loader.php和core / MY_Router.php移至CI / application / core。 安装离子验证:     将以下Ion Auth文件夹移动到CI / application / modules / auth文件夹:配置,控制器,语言,库,模型。     将Ion Auth / views文件夹下的文件移动到CI / application / modules / auth / views。 (没有一层额外的身份验证     就像离子验证中一样。)     在数据库中运行Ion Auth sql。 在yourbaseurl / index.php / auth上进行检查。     ,        我写了一个bash脚本来获取和安装CodeIgniter 2 + Modular Extensions 5.4 + Ion Auth 2。 这里是。祝您好运,如果有任何问题,请通知我。
#! /bin/bash

echo \"

This will install Codeigniter 2,Modular Extensions 5.4 and Ion Auth 2!

This script will TRY to download the packages for you.
-----------------------------------------------------
The resulting CodeIgniter install is already configured to remove the index.php
from the URL and should ALMOST be ready to run!  Make sure to read the
steps at the end of this.


Good luck..


Hit a key to continue or Ctrl-c to cancel now.\"


read

## Download the files
echo \"Get CodeIgniter\"
wget -O CodeIgniter.zip http://codeigniter.com/download.php

echo \"Get Ion Auth\"
wget --no-check-certificate -O benedmunds-ion-auth.zip https://github.com/benedmunds/CodeIgniter-Ion-Auth/zipball/2

echo \"Get Modular Extensions\"
wget --no-check-certificate -O wiredesignz.zip https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/get/tip.zip

## Unpack all the files
echo \"Unpack Files\"
unzip CodeIgniter.zip
rm CodeIgniter.zip
unzip benedmunds-ion-auth.zip
rm benedmunds-ion-auth.zip
unzip wiredesignz.zip
rm wiredesignz.zip

## Get the Dirs
echo \"Find Dirs\"
CI_DIR=`ls -c1 | grep ^CodeIgniter_`
ME_DIR=`ls -c1 | grep ^wired`
IA_DIR=`ls -c1 | grep ^ben`

## Make Modules Dir
echo \"Make Modules Dir\"
mkdir $CI_DIR/application/modules

## Move the Modular Extensions Files Into Place
echo \"Move Modular Extensions files\"
mv $ME_DIR/third_party/MX $CI_DIR/application/third_party
mv $ME_DIR/core/* $CI_DIR/application/core/

## Remove the Modular Extension Dir
echo \"Remove ME Install Dir\"
rm -rf $ME_DIR

## Make Welcome Module Dir
echo \"Make Modular Welcome Dir\"
mkdir -p $CI_DIR/application/modules/welcome/controllers

## Move default welcome controller to the modules dir
echo \"Move Welcome Controller into Modules\"
mv $CI_DIR/application/controllers/welcome.php $CI_DIR/application/modules/welcome/controllers/


## Make Welcome Views Dir
echo \"Make Welcome Views Dir\"
mkdir -p $CI_DIR/application/modules/welcome/views

## Move Welcome View into modular dir
echo \"Move Welcome views into modular Welcome Dir\"
mv $CI_DIR/application/views/welcome_message.php $CI_DIR/application/modules/welcome/views/

## Rename Ion Auths Dir to Auth
echo \"Rename Ion Auth Dir to Auth\"
mv $IA_DIR $CI_DIR/application/modules/auth

## Update the Welcome Controller to extend MX_Controller instead of CI_Controller
echo \"Update Welcome Controller to extend MX_Controller\"
sed -i -e \"s/CI_Controller/MX_Controller/\" $CI_DIR/application/modules/welcome/controllers/welcome.php

## Update the default autoload file to include database and session libraries
echo \"Update autoload file to include the database and session libraries\"
sed -i -e \"s/\\$autoload\\[\'libraries\'] = array()/\\$autoload[\'libraries\'] = array(\'database\',\'session\')/\" $CI_DIR/application/config/autoload.php

## Update the config file to remove index.php
echo \"Update config file to remove index.php\"
sed -i -e \"s/\\$config\\[\'index_page\'] = \'index.php\';/\\$config[\'index_page\'] = \'\';/\" $CI_DIR/application/config/config.php

## Update the Ion Auth libraries to use the auth resource
echo \"Update Ion Auth Lib to use the Auth Resources\"
sed -i -e \"s/\\$this->ci->load->config(\'ion_auth\',TRUE);/\\$this->ci->load->config(\'auth\\/ion_auth\',TRUE);/\" $CI_DIR/application/modules/auth/libraries/Ion_auth.php
sed -i -e \"s/\\$this->ci->lang->load(\'ion_auth\');/\\$this->ci->lang->load(\'auth\\/ion_auth\');/\" $CI_DIR/application/modules/auth/libraries/Ion_auth.php
sed -i -e \"s/\\$this->ci->load->model(\'ion_auth_model\');/\\$this->ci->load->model(\'auth\\/ion_auth_model\');/\" $CI_DIR/application/modules/auth/libraries/Ion_auth.php

## Update the Ion Auth model to use the auth resource
echo \"Update the Ion Auth Model to use the Auth Resources\"
sed -i -e \"s/\\$this->load->config(\'ion_auth\',TRUE);/\\$this->load->config(\'auth\\/ion_auth\',TRUE);/\" $CI_DIR/application/modules/auth/models/ion_auth_model.php
sed -i -e \"s/\\$this->lang->load(\'ion_auth\')/\\$this->lang->load(\'auth\\/ion_auth\')/\" $CI_DIR/application/modules/auth/models/ion_auth_model.php

## Update the Auth Controller to extend MX_Controller instead of CI_Controller
echo \"Update Auth Controller to extend MX_Controller\"
sed -i -e \"s/CI_Controller/MX_Controller/\" $CI_DIR/application/modules/auth/controllers/auth.php

## Update the Auth Controller so \"$this->data\" will be \"$data\"
echo \"Update the Auth Controller to change \\$this->data to \\$data\"
sed -i -e \"s/\\$this->data/\\$data/\" $CI_DIR/application/modules/auth/controllers/auth.php

## Move auth/views files up 1 level
echo \"Move auth/views files up 1 level\"
mv $CI_DIR/application/modules/auth/views/auth/* $CI_DIR/application/modules/auth/views/

## Remove the auth/views/auth dir
echo \"Remove the auth/views/auth dir\"
rmdir $CI_DIR/application/modules/auth/views/auth

## Make the routes.php file
echo \"Write the modules/auth/config/routes.php file\"
echo \"<?php  if ( ! defined(\'BASEPATH\')) exit(\'No direct script access allowed\');
/*
| -------------------------------------------------------------------------
| URI ROUTING
| -------------------------------------------------------------------------
*/

\\$route[\'auth/(:any)\'] = \\\"auth/\\$1\\\";

/* End of file routes.php */
/* Location: ./application/config/routes.php */


\" > $CI_DIR/application/modules/auth/config/routes.php

echo \"Creating the $CI_DIR/.htaccess file\"
echo \"## Set up mod_rewrite

<IfModule mod_rewrite.c>
Options +MultiViews +FollowSymLinks
DirectoryIndex index.php index.html

# Enable Rewrite Engine
# ------------------------------
RewriteEngine On

# UPDATE THIS TO POINT TO where you installed this FROM YOUR DOC ROOT.
# If this is in the DOC ROOT,you can
# do it here by uncommenting and updating the \'Rewrite*\'s below.
#
# Add or remove \'www.\'  Whichever you prefer.  
# This one removes the \'www.\' which seems to be the favorable choice these days. 
# ------------------------------
#RewriteCond %{HTTP_HOST} ^www.<sitename>.com
#RewriteRule (.*) http://<sitename>.com/\\$1 [R=301,L]

# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\\.php/*(.*) \\$1\\$2 [R=301,L]


# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteRule modules/(.+)/controllers/(.+)\\.php\\$ /index.php?/\\$1/\\$2 [L,R=301]
RewriteRule controllers/(.+)\\.php\\$ /index.php?/\\$1 [L,R=301]

RewriteCond \\$1 !\\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\\$ index.php/\\$1 [L]

</IfModule>\" > $CI_DIR/.htaccess

echo \"

*********** DON\'T FORGET THESE STEPS ***********
====================================================================

6 more steps:
==================
1) Update the \\$config[\'base_url\'] var in application/config/config.php
2) Update the \\$config[\'encryption_key\'] var in application/config/config.php
3) Update your application/config/database.php file to work with your database,4) Run the Ion Auth SQL file located in application/modules/auth/sql.
5) Now rename or move everything from $CI_DIR into where you set \\$config[\'base_url\']

If you put your CodeIgniter files anywhere other than DOC ROOT you need to do step 6:
6)Update the \'RewriteBase\' in the .htaccess file in your CodeIgniter Directory to where your CodeIgniter files are.

If your CodeIgniter files ARE IN the DOC ROOT of your webserver,you should be able to run from there like this:
---------------
yourdomain.com
yourdomain.com/auth


If your CodeIgniter files AREN\'T IN the DOC ROOT:
Remember to update the RewriteBase to point to \"your_ci_dir\" (see below) in the .htaccess file and you should be able to run like this:
--------------------------
yourdomain.com/your_ci_dir
yourdomain.com/your_ci_dir/auth

====================================================================
    YOU SHOULD BE DONE AFTER FOLLOWING THOSE STEPS!

I think you should be up and running!


Hope this all works!


Please let me know if this worked for you or not!
Edmund - edmundchaniii AT gmail.com

C\'ya!

\"
    ,        @ciuser和@Dash给出的解决方案对我有用,但是自动加载ion_auth并不是因为语言文件。因此,我将语言文件夹的内容保留在application / language文件夹中,并将其作为一个模块工作,就像一个魅力一样。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-