1.用GII 生成一个模块(modules)名字为 admin

2.在./config/web.php 中加入如下配置

    'modules' => [
'admin' => [
'class' => 'app\modules\admin\Module',//后台模块
]
],
'components' => [ 'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
'loginUrl'=>['/site/login'],//定义后台默认登录界面[权限不足跳到该页]
'identityCookie' => ['name' => '__user_identity', 'httpOnly' => true],
'idParam' => '__user'
], //前后台登录分离
'admin' => [
'class' => 'yii\web\User',
'identityClass' => 'app\modules\admin\models\AdminUser',
'enableAutoLogin' => true,
'loginUrl'=>['/admin/site/login'],//定义后台默认登录界面[权限不足跳到该页]
'identityCookie' => ['name' => '__admin_identity', 'httpOnly' => true],
'idParam' => '__admin'
],
]
3.把 app\controllers\SiteController.php 控制器复制到 app\modules\admin\controllers\SiteController.php 并修改其中的登录和退出动作。
SiteController.php的命名空间改为 namespace app\modules\admin\controllers;

把 use app\models\LoginForm; 改为 use app\modules\admin\models\LoginForm;
   把 use app\models\ContactForm; 改为  use app\modules\admin\models\ContactForm;

    public function actionLogin()
{
if (!\Yii::$app->admin->isGuest) {
//return $this->goHome();
return $this->redirect(['/admin/site/index']);
} $model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
//return $this->goBack();
return $this->redirect(['/admin/site/index']);
}
return $this->render('login', [
'model' => $model,
]);
} public function actionSignout()
{
/*
Yii::$app->user->logout(); return $this->goHome();
*/
//Yii::$app->user->logout(false);
Yii::$app->admin->logout();
//return $this->goHome();
return $this->redirect(['/admin/site/login']);
}
4.把 app\models\User.php 复制到 app\modules\admin\models\目录下

5.把 app\models\LoginForm.php 复制到 app\modules\admin\models\LoginForm.php目录下,并修改内容,如下:
<?php

namespace app\modules\admin\models;

use Yii;
use yii\base\Model;
use app\modules\admin\models\AdminUser; /**
* LoginForm is the model behind the login form.
*/
class LoginForm extends Model
{
public $username;
public $password;
public $rememberMe = true; private $_user = false; /**
* @return array the validation rules.
*/
public function rules()
{
return [
// username and password are both required
[['username', 'password'], 'required'],
// rememberMe must be a boolean value
['rememberMe', 'boolean'],
// password is validated by validatePassword()
['password', 'validatePassword'],
];
} /**
* Validates the password.
* This method serves as the inline validation for password.
*
* @param string $attribute the attribute currently being validated
* @param array $params the additional name-value pairs given in the rule
*/
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.');
}
}
} /**
* Logs in a user using the provided username and password.
* @return boolean whether the user is logged in successfully
*/
public function login()
{
if ($this->validate()) {
return Yii::$app->admin->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
}
return false;
} /**
* Finds user by [[username]]
*
* @return User|null
*/
public function getUser()
{
if ($this->_user === false) {
$this->_user = AdminUser::findByUsername($this->username);
} return $this->_user;
}
}
6.把 views\site文件夹复制到 admin\views\ 中
在 admin\view\index.php中加入
<?=Yii::$app->admin->isGuest ? Html::a('Login',['/admin/site/login']) : Html::a('logout('.Yii::$app->admin->identity->username.')',['/admin/site/signout'])?>
这样后台就有显示登录及退出连接 至此后前台的登录就分离了,前台的登录系统有自带的,这里就不说了 前台登录地址:localhost/index.php?r=site/login
前台退出地址:localhost/index.php?r=site/logout 后台登录地址:localhost/index.php?r=admin/site/login
后台退出地址:localhost/index.php?r=admin/site/singout

 关键的 6 个方法是

 1.后台判断是否登录 Yii::$app->admin->isGuest

 2.后台登录 Yii::$app->admin->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);

 3.后台退出 Yii::$app->admin->logout();

 4.前台判断是否登录 Yii::$app->user->isGuest

 5.前台登录 Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);

 6.前台退出 Yii::$app->user->logout();

												

Yii2 基础模板前后台登录分离的更多相关文章

  1. Yii中处理前后台登录新方法

    我一开始的做法是在后台登录时设置一个isadmin的session,然后再前台登录时注销这个session,这样做只能辨别是前台登录还是后台登录,但做不到前后台一起登录,也即前台登录了后台就退出了,后 ...

  2. Laravel 实现前后台用户分离登录

    在很多时候,我们需要前台和后台进行不同的登录操作,以限制用户权限,现在用 Laravel 实现这个需求. 前戏 一.获取 Laravel 这个在文档中都有说明的,也比较简单,可以使用 composer ...

  3. Yii2 高级模板不使用Apache配置目录,将前后台入口移到根目录

    刚刚入手Yii2高级模板不久,部署项目时,得部署2个应用,个人感觉很繁琐,就将前后台入口文件全部拿到项目根目录.但是一看,完了,出错了!找教程找不到,还是自己解决吧 为了以后好升级,不改变Yii2核心 ...

  4. 前后台彻底分离的核心文件bridge.js.

    具体代码可以在我的git上下载:https://github.com/guoyansi/bridge 这里的后台使用java写的,如果不了解java的童鞋可以忽略下面这样图片. bridge.js / ...

  5. 【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)

    前言 做这个 vueAdmin-template 的主要原因是: vue-element-admin 这个项目的初衷是一个vue的管理后台集成方案,把平时用到的一些组件或者经验分享给大家,同时它也在不 ...

  6. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  7. new 经典基础模板总结

    NOIP-NOI-ZJOI基础模板总结 目录 C++语言和STL库操作 重载运算符操作 /* 重载运算符 格式 如重载小于号 这里是以x递减为第一关键字比较,y递减为第二关键字比较 */ bool o ...

  8. Bootstrap 4/3 页面基础模板 与 兼容旧版本浏览器

    Bootstrap 3 与 4 差别很大,目录文件结构.所引入的内容也不同,这里说说一下 Bootstrap 引入的文件.网页模板和兼容性问题.本网站刚刚搭建好,正好发一下文章原来测试网站. Boot ...

  9. Hadoop程序基础模板

    分布式编程相对复杂,而Hadoop本身蒙上大数据.云计算等各种面纱,让很多初学者望而却步.可事实上,Hadoop是一个很易用的分布式编程框架,经过良好封装屏蔽了很多分布式环境下的复杂问题,因此,对普通 ...

随机推荐

  1. 剑指offer第二版-总结:排序算法

    1.排序算法比较: 2.java实现 快排: /** * 快排 * * @since 2019年2月26日 下午1:37:34 * @author xuchao */ public class Qui ...

  2. WebRTC:数据传输相关协议简介

    对网络协议来说,需要做的通常就两件事情:1.建立连接,2.传输数据,WebRTC也不例外. 假设WebRTC应用的两端已经建立了连接,那么,剩下就是如何传输数据的问题了. WebRTC同时支持传输音视 ...

  3. Spring Cloud Alibaba | Sentinel: 分布式系统的流量防卫兵初探

    目录 Spring Cloud Alibaba | Sentinel: 分布式系统的流量防卫兵初探 1. Sentinel 是什么? 2. Sentinel 的特征: 3. Sentinel 的开源生 ...

  4. Java编程思想:利用内部类实现的工厂模式

    public class Test { public static void main(String[] args) { Factories.test(); } } /* 设计模式之禅中的工厂模式是这 ...

  5. 对DatagramSocket的使用实例(java使用UDP进行数据传输)

    今天刚看懂的一点点东西,记录一下,方便自己回顾 客户端: Client.java import java.io.IOException; import java.net.DatagramPacket; ...

  6. 【HDU - 1043】Eight(反向bfs+康托展开)

    Eight Descriptions: 简单介绍一下八数码问题:在一个3×3的九宫格上,填有1~8八个数字,空余一个位置,例如下图: 1 2 3 4 5 6 7 8   在上图中,由于右下角位置是空的 ...

  7. 个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强

    Excel的函数有400多个,真正常用的50多个,而常有的文本处理类函数也不多,不是因为文本类处理简单,而是Excel真的有点挤牙膏式的每个版本更新那么几个小函数,普通用户等得急切,但实际上这些小函数 ...

  8. SP1026 FAVDICE - Favorite Dice[期望DP]

    也许更好的阅读体验 \(\mathcal{Description}\) 一个\(n\)面的骰子,求期望掷几次能使得每一面都被掷到 输入有\(T\)组数据,每次输入一个\(n\) 输出保留两位小数 \( ...

  9. spring 注解验证@NotNull等使用方法

    @Null 被注释的元素必须为null@NotNull 被注释的元素不能为null@AssertTrue 被注释的元素必须为true@AssertFalse 被注释的元素必须为false@Min(va ...

  10. MyBatis在Spring环境下的事务管理

    MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题--另外,最近接触了JFin ...