zoukankan      html  css  js  c++  java
  • laravel5通过auth.attempt事件加入登陆验证码

    <?php namespace WangDongHttpControllersAuth;
    
    use IlluminateHttpExceptionHttpResponseException;
    use IlluminateHttpRequest;
    use WangDongHttpControllersController;
    use IlluminateContractsAuthGuard;
    use IlluminateContractsAuthRegistrar;
    use IlluminateFoundationAuthAuthenticatesAndRegistersUsers;
    
    class AuthController extends Controller {
    
        /*
        |--------------------------------------------------------------------------
        | Registration & Login Controller
        |--------------------------------------------------------------------------
        |
        | This controller handles the registration of new users, as well as the
        | authentication of existing users. By default, this controller uses
        | a simple trait to add these behaviors. Why don't you explore it?
        |
        */
    
        use AuthenticatesAndRegistersUsers;
    
        /**
         * Create a new authentication controller instance.
         *
         * @param  IlluminateContractsAuthGuard  $auth
         * @param  IlluminateContractsAuthRegistrar  $registrar
         * @return void
         */
        public function __construct(Guard $auth, Registrar $registrar,Request $request)
        {
            $this->auth = $auth;
            $this->registrar = $registrar;
            //注册auth.attemp事件
            //加入验证码的验证
            $this->auth->attempting(function()use($request){
                $phrase = Session::get('phrase');
                if($request->input('phrase') != $phrase){
                    throw new HttpResponseException(
                        redirect('/auth/login')->withInput($request->input())->withErrors(['phrase'=>'验证码错误'])
                    );
                }
            });
            $this->middleware('guest', ['except' => 'getLogout']);
        }
    
    }

    需要特别说明的是HttpResponseException这个异常,这个异常接收一个Response作为参数,在IlluminateRoutingRoute的run方法中会捕获这个异常并返回设置的Response,所以我们可以通过抛出这个异常来终止我们的应用程序并跳转

        public function run(Request $request)
        {
            $this->container = $this->container ?: new Container;
    
            try
            {
                if ( ! is_string($this->action['uses']))
                    return $this->runCallable($request);
    
                if ($this->customDispatcherIsBound())
                    return $this->runWithCustomDispatcher($request);
    
                return $this->runController($request);
            }
            catch (HttpResponseException $e)
            {
                return $e->getResponse();
            }
        }    
  • 相关阅读:
    Apache、NGINX支持中文URL
    JS中关于clientWidth offsetWidth scrollWidth 等的含义
    设置apache登陆密码验证
    通过java代码访问远程主机
    win7
    Netty从没听过到入门 -- 服务器端详解
    分块分段
    数论-佩尔方程
    数论-毕达哥拉斯三元组
    HDU 5613-Baby Ming and Binary image
  • 原文地址:https://www.cnblogs.com/xiaodo0/p/4397982.html
Copyright © 2011-2022 走看看