简体   繁体   English

如何从管理员登录页面登录,其他人应从 laravel 5.8 中的另一个登录页面登录

[英]How to login from admin login page and others should login from another login page in laravel 5.8

In users table i have admin, editor and blogger i want admin can login from different login page than editor and blogger login page and i have to two login pages and all users exist in users table but blogger or editor shouldn't login from admin login page and same for admin admin should prevent to login in editor and blogger login too and after logged in for admin, editor and blogger for all users redirect me to admin panel, only different login from should have, how can make this please help.在用户表中,我有管理员、编辑和博主,我希望管理员可以从不同于编辑和博主登录页面的登录页面登录,并且我必须有两个登录页面,并且所有用户都存在于用户表中,但博主或编辑不应该从管理员登录管理员的页面和相同的管理员也应该防止登录编辑器和博客登录,并且在登录管理员后,所有用户的编辑器和博客将我重定向到管理面板,只有不同的登录应该有,如何做到这一点请帮忙。

Tip: I have distinguished users by type not role提示:我按类型而不是角色区分用户

用户表图像

admin-login.blade.php管理员登录.blade.php


@include('layouts.app')


    <div class="sufee-login d-flex align-content-center flex-wrap">
        <div class="container">



            <div class="login-content">
                <div class="login-logo">
                    <a href="{{ route('login') }}">
                        <img class="align-content" src="{{ asset('others') }}/{{  $shareData['admin_logo'] }}" alt="">
                    </a><div style="color: white; text-align: center;">Admin Login</div>
                </div>
                <div class="login-form">
                    <form class="form-horizontal" method="POST" action="{{ route('login') }}">
                        {{ csrf_field() }} <!-- means you are still using middleware--> <!-- before--><!-- admin.login.submit -->
                        <div class="form-group">
                            <label>Email address</label>

                             <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required autofocus>

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                        </div>
                        <div class="form-group">
                            <label>Password</label>
                            <input id="password" type="password" class="form-control" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}> Remember Me
                            </label>
                            <label class="pull-right">
                                <a class="btn btn-link" href="{{ route('password.request') }}">
                                    Forgot Your Password?
                                </a>
                            </label>

                        </div>
                        <button type="submit" name="login" class="btn btn-success btn-flat m-b-30 m-t-30">Sign in</button>
                        <div class="register-link m-t-15 text-center">
                             <br>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>


    <script src="{{ asset('admin/assets/js/vendor/jquery-2.1.4.min.js') }}"></script>
    <script src="{{ asset('admin/assets/js/popper.min.js') }}"></script>
    <script src="{{ asset('admin/assets/js/plugins.js') }}"></script>
    <script src="{{ asset('admin/assets/js/main.js') }}"></script>


</body>
</html>


login.blade.php login.blade.php


@include('layouts.app')


    <div class="sufee-login d-flex align-content-center flex-wrap">
        <div class="container">
            <div class="login-content">
                <div class="login-logo">
                    <a href="{{ route('login') }}">
                        <img class="align-content" src="{{ asset('others') }}/{{  $shareData['admin_logo'] }}" alt="">
                    </a>
                </div>
                <div class="login-form">
                    <form class="form-horizontal" method="POST" action="{{ route('login') }}">
                        {{ csrf_field() }} <!-- for multiple exception-->
                        <div class="form-group">
                            <label>Email address</label>

                             <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required autofocus>

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                        </div>
                        <div class="form-group">
                            <label>Password</label>
                            <input id="password" type="password" class="form-control" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}> Remember Me
                            </label>
                            <label class="pull-right">
                                <a class="btn btn-link" href="{{ route('password.request') }}">
                                    Forgot Your Password?
                                </a>
                            </label>

                        </div>
                        <button type="submit" name="login" class="btn btn-success btn-flat m-b-30 m-t-30">Sign in</button>
                        <div class="register-link m-t-15 text-center">
                            <p>Don't have account ? <a href="{{ route('register') }}"> Sign Up Here</a></p>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>


    <script src="{{ asset('admin/assets/js/vendor/jquery-2.1.4.min.js') }}"></script>
    <script src="{{ asset('admin/assets/js/popper.min.js') }}"></script>
    <script src="{{ asset('admin/assets/js/plugins.js') }}"></script>
    <script src="{{ asset('admin/assets/js/main.js') }}"></script>


</body>
</html>

LoginController.php登录控制器.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/back'; // redirect to back page

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}


AdminLoginController.php AdminLoginController.php


<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;

class AdminLoginController extends Controller
{

    public function __construct()
    {

        $this->middleware('guest')->except('logout'); //who want to have access to this  // before //$this->middleware('guest:admin');

    }


    public function showLoginForm()
    {


        return view('auth.admin-login');

    }


    public function login(Request $request)
    {
        // Validate the form data
         $this->validate($request, [
        'email'   => 'required|email',
        'password' => 'required|string|min:6'
      ]);

        // Attemp to log the user in
         if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
        // if successful, then redirect to their intended location
        return redirect()->intended(route('admins')); // we redirected them where they wanted to go  // admin.dashboard  // route('admins'); should be same with ->name('admins'); in page of web 
      }


        // If unsuccessful, then redirect back to the login with the form data
        return redirect()->back()->withInput($request->only('email', 'remember'));
    }


}

Try overriding showLoginForm() in your LoginController like this:尝试在LoginController中覆盖showLoginForm() ,如下所示:

class LoginController extends Controller
{
    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showLoginForm()
    {
        return $isAdmin ? view('auth.admin-login') : view('auth.login');
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM