精华内容
下载资源
问答
  • 今天小编就为大家分享一篇laravel实现登录时监听事件,添加登录用户的记录方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 一、执行,php artisan make:event AdminLoginEvent 命令,Laravel目录\app\Events会生成AdminLoginEvent.php文件,二、我们先在\app\Providers目录下找到EventServiceProvider.php文件,该文件内有一个Events-...

    一、执行,php artisan make:event AdminLoginEvent 命令,Laravel目录\app\Events会生成AdminLoginEvent.php文件,

    二、我们先在\app\Providers目录下找到EventServiceProvider.php文件,该文件内有一个Events-Listeners数组来保存事件和监听者的映射关系:

    protected $listen = [
        'App\Events\AdminLoginEvent' => [
            'App\Listeners\AdminLogListener',
        ],
    ];

    三、执行,php artisan event:generate 命令,Laravel\app\Listeners目录下会生成AdminLogListener.php文件在文件里写一些业务:

    <?php
    
    namespace App\Listeners;
    
    use App\Business\AdminLogBiz;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Common;
    
    class AdminLogListener implements ShouldQueue
    {
        private $adminLogBiz;
    
        /**
         * Create the event listener.
         * UserLogListener constructor.
         * @param AdminLogBiz $adminLogBiz
         */
        public function __construct(AdminLogBiz $adminLogBiz)
        {
            $this->adminLogBiz = $adminLogBiz;
        }
    
        /**
         * Handle the event.
         *
         * @param  object  $event
         * @return void
         */
        public function handle($event)
        {
            $admin = $event->admin;
            $data = [];
            $data['admin_id'] = $admin->id;
            $data['admin_username'] = $admin->truename;
            $data['remote_ip'] = Common::getClientIP();
            $data['location'] = isset($ipInfo['city']) ? $ipInfo['city'] : '';
            $userName = empty($admin->truename) ? $admin->mobile : $admin->truename;
            $data['log_code'] = 'login';
            $data['log_content'] = $userName . '用户登陆';
            $this->adminLogBiz->add($data);
        }
    }

    四、触发这个事件,在用户登录的地方:

    use App\Events\AdminLoginEvent;

    /**
     * 登录
     *
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function signin(Request $request)
    {
        $username = $request->username;
        $password = $request->password;
        if (Auth::guard('admin')->attempt(array('username' => $username, 'password' => $password))) {
            if (Auth::guard('admin')->user()->status) {
                $this->logout($request);
                return redirect('/admin/login')->with('error', '账号已被锁定');
            } else {
                event(new AdminLoginEvent(Auth::guard('admin')->user()));
                return redirect('admin/index');
            }
        } else {
            return redirect('admin/login')->with('error', '账户或密码错误');
        }
    }
    这样就完成了整个用户登录的监听事件,当用户登录的时候表就会添加用户登录的信息。


    展开全文
  • Laravel实现QQ登录

    千次阅读 2018-05-09 11:42:19
    Laravel实现QQ登录 环境: laravel:5.5.40 php: 7.2.2 1. 利用composer安装qq登录的依赖(在命令行输入框) composer require socialiteproviders/qq 2. 将第三方的登录服务者注册进容器内(config/app.php...

    Laravel实现QQ登录

    环境:
    laravel:5.5.40
    php: 7.2.2
    前置条件,在qq互联有创建应用的权限。https://blog.csdn.net/qq_25615395/article/details/80251094

    1. 利用composer安装qq登录的依赖(在命令行输入框)

    composer require socialiteproviders/qq

    2. 将第三方的登录服务者注册进容器内(config/app.php)

    'providers' => [
        // 移除 'Laravel\Socialite\SocialiteServiceProvider',
        SocialiteProviders\Manager\ServiceProvider::class, // 添加
    ];

    3. 添加门脸类(config/app.php)

    'Socialite' => Laravel\Socialite\Facades\Socialite::class,

    4. 添加事件监听器(App/Providers/EventServiceProvider

    protected $listen = [
        'SocialiteProviders\Manager\SocialiteWasCalled' => [
            'SocialiteProviders\Qq\QqExtendSocialite@handle',//这里的SocialiteProviders\Qq\QqExtendSocialite@handle,里面有个q改成大写
         'SocialiteProviders\QQ\QqExtendSocialite@handle',//改成这样就对了,之前如果那个q是小写的话会报找不到类的错误。
     ], ];

    5. 在config/service.php添加QQ接口信息

    'qq' => [
        'client_id' => env('QQ_KEY'),
        'client_secret' => env('QQ_SECRET'),
        'redirect' => env('QQ_REDIRECT_URI'),  
    ], 

    6. 在.env里面QQ接口的信息

    QQ_KEY=xxxxxx
    QQ_SECRET=xxxxxx
    QQ_REDIRECT_URI=xxxxxx

    QQ_KEYQQ_SECRET需要在qq互联上申请,QQ_REDIRECT_URI需要在qq互联上设置。
    这里的回调地址必须要跟qq互联管理中心(https://connect.qq.com)设置的回调地址一样。

    7. 添加路由routes/web.php

    // 登录界面的展示
    Route::get('auth/{service}', 'Auth\SocialiteLoginController@redirectToProvider')->name('socialite_login_form');
    // 登录回调的处理
    Route::get('auth/{service}/callback', 'Auth\SocialiteLoginController@handleProviderCallback')->name('socialite_login');

    8. 前台登录界面的使用

    <div class="form-group">
        <div class="col-md-8 col-md-offset-4">
            <button type="submit" class="btn btn-primary">
                登录
            </button>
    
            <a class="btn btn-link" href="{{ route('password.request') }}">
                忘记密码?
            </a>
            <a class="btn btn-link" href="{{route('socialite_login_form','qq')}}"><i class="fa fa-qq"></i> qq登录</a>
        </div>
    </div>

    9. 添加控制器App\Http\Controllers\Auth\SocialiteLoginController.php

    <?php
    
    namespace App\Http\Controllers\Auth;
    
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use Laravel\Socialite\Facades\Socialite;
    
    /**
     * 第三方登录控制器
     *
     * Class SocialiteLoginController
     * @package App\Http\Controllers\Auth
     */
    class SocialiteLoginController extends Controller
    {
        /**
         * 第三方登录用户信息的展示
         *
         * @param $service
         * @return mixed
         */
        public function redirectToProvider($service)
        {
            return Socialite::driver($service)->redirect();
        }
    
        /**
         * 处理第三方登录的回调
         *
         * @param $service
         */
        public function handleProviderCallback($service)
        {
            $user = Socialite::driver($service)->user();
            dd($user);
        }
    }
    

    登陆后的具体逻辑想看下一篇文章
    https://blog.csdn.net/qq_25615395/article/details/80256098

    展开全文
  • 今天小编就为大家分享一篇laravel 实现用户登录注销并限制功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • laravel实现QQ登录

    2018-12-06 17:29:22
    laravel实现第三方登录(qq登录) 最近刚学习了laravel这个框架,感觉特别好用,于是用laravel写了一个自己的网站,登录用的是laravel自带的用户认证,由于我平时登录别的网站时喜欢使用第三方登录,于是想自己写个...

    环境配置:

    laravel 5.5

    centos7.2

    php7.1

    参考文章

    laravel实现第三方登录(qq登录) 

    最近刚学习了laravel这个框架,感觉特别好用,于是用laravel写了一个自己的网站,登录用的是laravel自带的用户认证,由于我平时登录别的网站时喜欢使用第三方登录,于是想自己写个第三方登录玩一下,分别申请了QQ和微信的第三方平台,微信太坑了,明明是个人开发者,在申请表上居然还要盖章,我又没有自己的章,上哪盖去。 QQ的应用很容易就通过了,于是就先写个QQ登录试一下。

    1.在QQ互联上创建应用,获得APP ID和APP Key并设置好QQ登录的回调地址

    登录之后点击应用管理就可以创建应用啦,当然如果你不是开发者还得先申请成为开发者 ,点击右上角的头像就能够申请了

    点击创建应用,我创建的是网站应用

    之后填写这个表格就可以了,这个地方注意了网站名称跟简介最好跟你这个网站进行备案的时候填的信息一致,否则有可能审核不通过,会说你跟备案信息不一致

    审核很快的,审核通过以后就可以看到你的APP ID和APP Key了,并且需要设置你的回调地址,这里注意了,回调地址一旦设定好就不能改了,所有要谨慎设置你的回调地址

    2.开始在laravel上引入第三方组件并配置路由和控制器

    首先composer安装组件

    composer require socialiteproviders/qq

    打开config/app.php文件,注册服务提供者,如果用了laravel自带的社会化登陆要先注释掉

    'providers' => [
        SocialiteProviders\Manager\ServiceProvider::class, // 添加
    ];

    在该文件下方的aliases中添加这样一行

    'aliases'=>[
        'Socialite' => Laravel\Socialite\Facades\Socialite::class, //添加
    ]
    

    打开app/Providers/EventServiceProvider.php,添加事件监听器

    protected $listen = [
    	'SocialiteProviders\Manager\SocialiteWasCalled' => [  
    		'SocialiteProviders\QQ\QqExtendSocialite@handle', 
    	],                                                    
    ];

    在config/services.php中添加

    'qq' => [
    	'client_id' => env('QQ_KEY'),
    	'client_secret' => env('QQ_SECRET'),
    	'redirect' => env('QQ_REDIRECT_URI'),
    ],

    在.env文件中添加

    QQ_KEY=APP ID          
    QQ_SECRET=APP KEY
    QQ_REDIRECT_URI= http://www.example.com/qq       //你设置的回调地址

    为QQ登陆设置对应的路由,切记QQ登陆的路由不要放到带有auth中间件的路由组中,否则无法绕过auth自带的验证进行QQ登陆

    Auth::routes();
    Route::middleware('auth')->group(function (){
    	Route::any('/', 'HomeController@index')->name('home');
    });
    Route::get('/qq','QQController@qq');    //进行qq登录的路由
    Route::get('/qqlogin','QQController@qqlogin');   //授权回调的路由

    对应的控制器方法

    public function qq(){
    	return Socialite::with('qq')->redirect();
    }
    
    public function qqlogin(){
    	$user = Socialite::driver('qq')->stateless()->user();
    	var_dump($user);
    	if(!User::where('name',$user->nickname)){
    		$cur_user = User::create([
    			'name'=>$user->nickname,
    			'email'=>'',
    			'password'=>'',
    			'remember_token'=>Str::random(60)
    		]);
    	}else{
    		$cur_user=User::where('name',$user->nickname)->first();
    	}
    	Auth::login($cur_user);
    	return redirect('/home');
    }

    ok,这样就可以进行QQ登陆了,当然微信登陆,微博登陆都是一样的,这个包里面也有对应的方法

    欢迎关注「不出户」公众号 

    在公众号回复「python」,获取全套python学习资源。

    在公众号回复「vue」,领取vue核心教程

    在公众号回复「react」,领取react全套教程

    在公众号回复「angular」,领取angular学习资源

    在公众号回复「算法」,领取算法学习教程

    在公众号回复「nodejs」,领取nodejs学习教程,更有更多精品资源敬请期待

    欢迎关注不出户,让你足不出户爱好学习

    展开全文
  • 本文详细给我们展示了使用Laravel实现用户注册和登录的方法和步鄹,需要的朋友可以参考下
  • laravel实现基本登录注册

    千次阅读 2018-09-19 23:04:05
    1.首先第一步,创建登录注册的视图和路由 php artisan make:auth 打开注册界面 提交表单时出错了 看一下错误提示,emmm,没有配置数据库 2.打开.env文件,找到这么一段 DB_CONNECTION=mysql DB_HOST=...

    1.首先第一步,创建登录注册的视图和路由

    php artisan make:auth

    打开注册界面

    提交表单时出错了

    看一下错误提示,emmm,没有配置数据库

    2.打开.env文件,找到这么一段

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1//服务器地址
    DB_PORT=3306//端口号
    DB_DATABASE=homestead//数据库地址
    DB_USERNAME=homestead//数据库的用户名
    DB_PASSWORD=secret//密码
    

    将相应的数据改成自己的

    创建相应的表

    php artisan migrate:refresh --seed

    再打开注册的页面,成功注册并且登录成功

    3.有部分同学把User模型移动到了Model目录下,这时我们就得改一些路径了

    首先打开User.php

    改变命名空间为下面的一行

    namespace App\Http\Model;

    然后打开config目录下的auth.php的70行,修改为下面的一行

    'model' => App\Http\Model\User::class,

     

    展开全文
  • 今天小编就为大家分享一篇laravel实现Auth认证,登录、注册后的页面回跳方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 两个laravel项目共享session Laravel实现单点登录 创建两个 Laravel 5.5 项目 composer 安装predis composer require predis/predis 配置 Laravel 框架 1.配置 Laravel 框架下的.env文件中 Session 驱动、...
  • 这样就实现了用户登录,但是现在首页还是任何人都能看到所以我们要继续努力让只有登录的人才可以看到 创建一个中间件 php artisan make:middleware AdminMiddleware  在里面写上验证代码 php ...
  • laravel 实现用户登录注销并限制

    千次阅读 2018-02-05 15:10:38
    1. 创建登录控制器  在项目根目录输入: php artisan make:controller Admin/LoginController  2.创建用户模块 以及数据库  php artisan make:model Model/Admin -m  运行之后 项目中会新增两...
  • laravel 实现前后端登录分离

    千次阅读 2017-06-19 11:52:28
    aravel auth 用户认证都是通过 Auth门面 实现的,手动认证可以使用 Auth::attempt 或者 Auth::login 方法 Auth::guard('看守')->attempt($credentials);//尝试认证一个用户,返回bool值 看守的意思就类似于...
  • laravel实现第三方登录

    2016-09-12 14:23:00
    https://github.com/laravel/socialite 这是官方的第三方登录包,支持很多国外的第三方登录 https://github.com/overtrue/socialite 安正超写的作示范: 这里使用github登录作为演示: 首先在github...
  • } 3 分别 退出登录 public function logout(Request $request) { $this->guard()->logout(); $request->session()->forget($this->guard()->getName()); $request->session()->regenerate(); return redirect('...
  • Laravel实现软删除

    千次阅读 2020-07-17 22:31:55
    Laravel实现软删除 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入...
  • laravel8实现登录功能

    2021-05-25 21:23:09
    1.创建login页面。我去找的模板,模板地址:... ...写入: 的 2.建立controller模板(cmd进入laravel文件的根目录) php artisan make:controller Login 在模板中写入: public function index(){ return v
  • 1. 创建登录控制器在项目根目录输入: php artisan make:controller admin/logincontroller2.创建用户模块 以及数据库php artisan make:model model/admin -m运行之后 项目中会新增两个php文件新创建了admins用户表...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,859
精华内容 1,543
关键字:

laravel实现登录