백엔드 개발 PHP 튜토리얼 Laravel을 통해 사용자 등록 및 로그인 구현

Laravel을 통해 사용자 등록 및 로그인 구현

Jun 13, 2018 am 10:17 AM
laravel 사용자 등록 로그인

이 기사에서는 Laravel을 사용하여 사용자 등록 및 로그인을 구현하는 방법과 단계를 자세히 설명합니다. 필요한 친구들은 이를 참고할 수 있습니다.

Laravel은 가장 우아한 PHP 프레임워크이며, PHP를 배우는 많은 친구들이 군침을 흘리고 있습니다. 라라벨. 오늘 여러분의 소망을 실현해 보세요. 처음부터 시작하여 Laravel을 사용하여 웹 애플리케이션의 가장 일반적인 등록 및 로그인 기능을 구현해 봅시다! 모든 코스 소스 코드는 Github에 있습니다: laravel-start.

추천 mysql 비디오 튜토리얼: "mysql tutorial"

우선, 이 코스에 필요한 것이 무엇인지 명확히 합시다:

Laravel 4.2
Bootstrap 3.3
Laravel은 우리가 관심을 갖는 핵심 부분입니다. Bootstrap은 일부 프런트 엔드 CSS 스타일을 빠르게 설정하는 데 사용됩니다.

1. Laravel 설치

간단한 설명을 마친 후 다음 단계로 넘어가서 Laravel을 설치해 보겠습니다. 여기에서는 명령줄 터미널을 열고 다음을 실행합니다.

cd Sites
로그인 후 복사

Sites는 루트 디렉터리입니다. 필요에 따라 자신의 루트 디렉토리로 변경한 후 다음을 실행할 수 있습니다.

composer create-project laravel/laravel laravel
로그인 후 복사

laravel은 애플리케이션 디렉토리의 이름이며 원하는 이름을 선택할 수 있습니다. 위의 명령을 실행한 후 잠시 기다리세요(결국 중국에서는 인터넷 속도가 큰 문제입니다). 설치하고 나면 다음과 같은 디렉토리를 얻게 됩니다:

우리는 주로 모델, 컨트롤러의 세 가지 디렉토리를 운영합니다. 및 조회수: 이것이 MVC의 구성입니다!

2. Bootstrap을 설치하고

다음 명령줄에서 실행하세요.

cd laravel/public/packages
로그인 후 복사

여기의 laravel은 설치 중에 다른 이름을 사용한 경우 그에 따라 변경하세요. 패키지 디렉토리로 이동하여 Bootstrap을 설치하십시오. 명령줄에서 직접 실행하십시오:

bower install bootstrap
로그인 후 복사

이것이 더 빠르며, 다운로드한 후에는 Bootstrap의 최신 안정 버전을 얻게 됩니다. 패키지 디렉터리의 Bower_comComponents/bootstrap/dist/에는 개발 과정에서 자주 사용하는 Bootstrap의 css, js 및 글꼴과 세 가지 스타일 파일, js 및 글꼴 파일이 포함되어 있습니다. 성공하면 다음이 표시됩니다.

참고: 여기에 사용된 도구 모음은 일부 프런트엔드 패키지 관리를 담당합니다.
이제 예비 작업이 준비되었습니다. 하지만 다음 단계로 넘어가기 전에 먼저 laravel/app/storage 디렉터리에 해당 쓰기 권한이 있는지 확인해야 합니다. Bower를 설치한 후 명령줄을 건드리지 않은 경우 다음을 직접 전달할 수 있습니다.

cd ../../
로그인 후 복사

laravel 디렉터리로 돌아가서 다음을 실행합니다.

chmod -R 755 app/storage
로그인 후 복사

이 단계를 완료하면 실제 개발 단계로 들어갈 수 있습니다.

3. 데이터베이스 구성 및 테이블 생성:

구성을 시작하기 전에 laravel 애플리케이션용 데이터베이스를 생성해야 합니다. 이름은 laravel-start,

로 지정한 다음 편집기에서 엽니다. app/config/database.php 파일에서 다음과 같은 해당 데이터베이스 구성 항목을 입력합니다.

'default' => 'mysql',
// 数据库连接
'connections' => array(
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'database'  => 'laravel-start',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
로그인 후 복사

데이터베이스에 연결한 후 사용자 테이블을 데이터베이스에서 직접 생성하거나 사용자 테이블을 생성해야 합니다. Laravel의 Create it with artisan을 사용할 수 있습니다. 여기에서는 Laravel의 artisan을 사용하여 테이블을 만들고 Laravel 마이그레이션에 대해 조금 배웁니다. 다음 명령문을 실행합니다:

php artisan migration:make create-users-table
위 명령은 마이그레이션 파일을 생성합니다(파일은 app/database/migrations 디렉터리에 있음). 이 파일의 이름은 create-users입니다. -table을 클릭한 다음 방금 생성한 마이그레이션 파일을 편집하여 사용자 테이블을 생성할 수 있습니다.

public function up() {
       Schema::create('users', function($table){
        $table->increments('id');
        $table->string('username', 20);
        $table->string('email', 100)->unique();
        $table->string('password', 64);
        $table->string('remember_token',62)->default('default');
        $table->timestamps();
        });
}
로그인 후 복사

위 메소드는 laravel의 Schema Builder 클래스를 사용합니다. 위 코드는 사용자 테이블을 생성하기 위해 up() 메소드를 사용합니다. 이 테이블에는 id 자동 증가, 20 이내의 사용자 이름 길이, 100 이내의 이메일 길이가 있습니다. 그리고 비밀번호 길이는 64자 이내여야 합니다. Remember_token은 로그인 시 더욱 편리하고 실용적이게 하기 위한 것입니다. Laravel은 자동으로 토큰 값을 채우지만 처음에는 기본값을 설정해야 하며 현재 타임스탬프를 타임스탬프로 지정해야 합니다. . 여기서 주의해야 할 점은 언젠가 Users 테이블을 삭제해야 하는 경우를 대비해 down()에 다음 코드를 추가하는 것이 가장 좋다는 것입니다.

public function down()
{
    Schema::drop('users');
}
로그인 후 복사

위 작업을 수행한 후 다음 마법 명령을 실행합니다.

php artisan migrate
로그인 후 복사

사진과 진실이 있습니다:

드디어 서막이 끝났고 공식적으로 Laravel에 올 수 있습니다.

4. 서비스를 시작하여

laravel 디렉터리에서 직접 실행:

php artisan serve
로그인 후 복사

브라우저를 열고 localhost:8000을 입력하고 Enter 키를 누릅니다. 빙고!
좋아요, 이 지점에 성공적으로 도달했다면 먼저 30초 동안 자신에게 박수를 보내주세요. 축하합니다. Laravel의 문에 들어오셨습니다. 우리는 하나씩 더 많은 놀라움을 경험하게 될 것입니다...

5. 공개 뷰 만들기

好了,我们现在开始了,首先在app/views/文件夹下创建一个layouts文件夹,再再这个文件夹下新建一个php文件,命名为main.blade.php,在这个文件里写上下面这些代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>发现Laravel 4之美</title>
    </head>
    <body>
    </body>
</html>
로그인 후 복사

PS:layouts文件夹通常用来存放视图文件的功用部分,比如一些网页的头部

和尾部
,这里就是存放了头部
部分
感觉main.blade.php的名字很奇怪?不用担心,Laravel的视图文件命名遵循filename.blade.php的规则,因为Laravel是用Blade这个模板引擎解析的,你不用深究,就照着上面的名字规则来命名视图文件就OK

为视图文件添加CSS样式:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>发现Laravel 4之美</title>
       {{HTML::style(&#39;packages/bower_components/bootstrap/dist/css/bootstrap.min.css&#39;) }}
        {{ HTML::style(&#39;css/main.css&#39;)}}
    </head>
    <body>
    </body>
</html>
로그인 후 복사

没错,就是在原来的main.blade.php的基础上添加两行代码;然后我们来创建我们的main.css,这个主要是用来放我们自己定义的样式。在public文件夹下创建css文件夹,在css文件夹创建main.css文件,大功告成。

添加导航栏。在main.blade.php文件的标签中加上以下代码:

<body>
        <p class="navbar navbar-inverse navbar-fixed-top">
            <p class="container">
                <p class="navbar-header">
                    <a class="navbar-brand hidden-sm" href="/">Laravel新手上路</a>
                </p>
                <ul class="nav navbar-nav navbar-right hidden-sm">
                    <li>{{ HTML::link(&#39;users/register&#39;, &#39;注册&#39;) }}</li>
                    <li>{{ HTML::link(&#39;users/login&#39;, &#39;登陆&#39;) }}</li>
                </ul>
            </p>
        </p>
</body>
로그인 후 복사

上面只是引用了一些简单的Bootstrap的class,也没什么难的,不用伤心。

到这里基本的功用部分就结束了,但是我们的追求从不会这么low,所以为了更好地与用户交互,我们希望在用户进行某个操作之后给出一些反馈,比如注册成功的时候说:少年,你已成功注册本站,恭喜恭喜。等,于是乎,我们再为main.blade.php添加一点点代码:

<p class="container">
            @if(Session::has(&#39;message&#39;))
            <p class="alert">{{ Session::get(&#39;message&#39;) }}</p>
            @endif
        </p>
로그인 후 복사

为了现实这些反馈信息给用户,我们得使用Session::get('message')方法,当然,我们得首先从逻辑上判断一下这个message是否存在,所以这里用了一个简单的if判断。

在blade引擎的视图中if 的使用格式是

@if(conditions) 
#code...@endif
로그인 후 복사

到这里就结束了么?NO,如果到这里就结束的话,其他的视图文件是怎么插入main.blade.php的之间的呢?所以,不要忘了还有一个重要的事:{{ $content }},于是乎,上面的代码就变成了这样:

 <p class="container">
        @if(Session::has(&#39;message&#39;))
        <p class="alert">{{ Session::get(&#39;message&#39;) }}</p>
        @endif
        {{ $content }}
        </p>
로그인 후 복사

{{ $content }}在这里就是表示其他的视图文件内容,你可以在理解上将其他的视图当作一个字符串来理解,只不过这个字符串很长,而且恰好包含了HTML标签而已。下面你将体会到这种想法。

创建完我们的公用视图main.blade.php后,我们先来为main.css添加我们的CSS样式:

body {
     padding-top: 60px;
 } 
.form-signup, .form-signin {
     margin: 0 auto;
 }
로그인 후 복사

因为我们在main.blade.php文件中使用了

终于要进入正题

我擦,前面搞这么久才进入正题?对的,我说的是从这里开始我们就开始进入Laravel的Controller世界了,别高潮那么快,更好的事情还在后头。

6.创建UsersController

来到app/controllers文件夹,并在这里创建UsersController.php文件并加入下面的代码:

<?php 
class UsersController extends BaseController {
}
?>
로그인 후 복사

然后告诉我们的UsersController我们要使用main.blade.php作为我们的layouts,所以:

<?php 
class UsersController extends BaseController {
    protected $layout = "layouts.main";
}
?>
로그인 후 복사

这里使用了路径别名,你不用layouts/main.blade.php,你只需要layouts.main,Laravel会自动帮你找到layouts下相应的文件。

7.实现注册

接着为我们的UsersController添加用户注册时访问到的方法:

public function getRegister() {
    $this->layout->content = View::make(&#39;users.register&#39;);
}
로그인 후 복사

这里我们将content制定为users/register.blade.php文件(我们等下会创建这个文件),如果你够细心的话,你可能就注意到了:这里的content就是上面我们在main.blade.php写的{{ $content }},也就是说等下渲染视图的时候,我们的users/register.blade.php文件会替换掉main.blade.php的{{ $content }}进行显示。现在,清晰了没?还不清晰?随时联系我....如果你不嫌我长得丑的话。

自然而然的,我们现在要做的就是创建users/register.blade.php这个文件了,来到views文件夹 ,创建一个新的文件夹users/,再在里面新建register.blade.php,写上下面这些内容:

{{ Form::open(array(&#39;url&#39;=>&#39;users/create&#39;, &#39;class&#39;=>&#39;form-signup&#39;)) }}
<p class="container">
    <p class="row">
        <p class="col-md-4 col-md-offset-4">
            <p class="panel panel-default">
                <p class="panel-heading">
                    <h3 class="panel-title">欢迎注册</h3>
                </p>
                <p class="panel-body">
                {{ Form::open(array(&#39;url&#39;=>&#39;users/create&#39;, &#39;class&#39;=>&#39;form-signup&#39;)) }}
                    <ul>
                        @foreach($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                    <fieldset>
                        <p class="form-group">
                            {{ Form::text(&#39;username&#39;, null, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;用户名&#39;)) }}
                        </p>
                        <p class="form-group">
                        {{ Form::text(&#39;email&#39;, null, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;邮箱&#39;)) }}
                       </p>
                        <p class="form-group">
                        {{ Form::text(&#39;password&#39;, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;密码&#39;)) }} 
                        </p>                       
                        <p class="form-group">
                        {{ Form::text(&#39;password_confirmation&#39;, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;确认密码&#39;)) }}
                       </p>
                        {{ Form::submit(&#39;马上注册&#39;,array(&#39;class&#39;=>&#39;btn btn-large btn-success btn-block&#39;)) }}
                    </fieldset>
                {{ Form::close() }}
                </p>
            </p>
        </p>
    </p>
</p>
로그인 후 복사

这里我们使用了Laravel的Form类来创建我们的注册表单,首先调用open()方法,表示创建表单的开始,并且我们也为其通过数组的形式传人一些参数,url表示表到提交的地址,class就是表示CSS样式的类。接下来我们使用了:

@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
로그인 후 복사

@foreach循环将每个表单的错误信息输出。因为我们在让用户注册的时候总是要验证一下用户输入的数据是否满足我们设定的规则,比如邮箱这一栏我们规定它必须为正确的邮箱形式,而如果用户没有输入正确的邮箱格式,我们就会返回错误信息给用户看。That's it.

再下来需要说明的就是几个Form输入框的创建方式了:

{{ Form::text() }} //创建type=text 输入框
{{ Form::password() }}//创建type=password 输入框
{{ Form::submit() }}//创建type=submit 输入框
로그인 후 복사

各个输入框的值我们都设为null,因为我们用placeholder来更好的替代了,第三个参数是你可以通过一个数组来传人相应的HTML选项来实现我们的布局,比如上面的array('class'=>'form-control', 'placeholder'=>'确认密码')等。

最后别忘我们要用{{ Form::close() }}来结束表单。

到这里我们就把注册页面搞定了,紧接下来就是正确地设置好我们的路由以使我们能正确访问到我们的getRegister()方法。于是,带着神圣的使命感,我们打开app/routes.php这个文件,首先可以将里面的:

Route::get(&#39;/&#39;, function()
{
    return View::make(&#39;hello&#39;);
});
로그인 후 복사

这几行代码干掉(你可以注视掉或者直接删了,建议是注释),然后再添上下面这一行代码;

Route::controller(&#39;users&#39;, &#39;UsersController&#39;);
로그인 후 복사

注意到第一个参数users没,这个告诉就是说我们在访问UsersController的方法的时候我们遵循下面这个格式:

/users/actionName
比如我们想访问UsersController的getRegister(),我们可以在浏览器地址栏输入的格式是:

/users/register
于是,打开你的浏览器,在地址栏输入:

http://localhost:8000/users/register
见证奇迹吧。是不是很爽!哈哈哈。

如果现在你在这个注册表单添上相应的注册信息,然后点击注册的话,你会得到一个意外的错误:NotFoundHttpException!那是因为我们还没有为注册表单写提交地址:users/create。所以我们自然要来到UsersController中,为其添上postCreate():

public function postCreate() {
}
로그인 후 복사

这样我们就把地址users/create正确地搞定了,只是我们还没有为其添加相应的条件判断语句,因为我们首先要在这里说明一点就是:getRegister()和postCreate()的不同,没错前面的get或post就是代表http的提交方式,我们在注册表单中使用的是post方法,所以这里要使用postCreate()。

说明上面的细节之后,我们还要做一件非常重要的事:表单验证。即是先在用户提交表单的时候验证其输入数据的合法性,以便于我们在数据库中能存储正确的数据,这里就联系到前面的:

@foreach($errors->all() as $error)
    <li>{{ $error }}</li>
    @endforeach
로그인 후 복사

这里的$error就是我们在用户输入数据不合法的时候返回给用户的错误提示信息。所以,我们现在app/models/User.php中添加我们的表单验证规则(我一般将验证规则放在模型modal中):

public static $rules = array(
    &#39;username&#39;=>&#39;required|alpha|min:2&#39;,
    &#39;email&#39;=>&#39;required|email|unique:users&#39;,
    &#39;password&#39;=>&#39;required|alpha_num|between:6,12|confirmed&#39;,
    &#39;password_confirmation&#39;=>&#39;required|alpha_num|between:6,12&#39;
    );
로그인 후 복사

说明一下上面的一些规则表示什么意思:

required:必填的,不能为空
alpha:字母
email:邮件格式
unique:users:唯一,参考users表的设置
alpha_num:字母或数字
between:长度位于哪两个数字之间
confirmed:需要确认的

在我们有了验证规则,我们再来完善我们的postCreate(),即为其添加一些条件判断使用户在注册时可以保存用户的注册信息和进一步引导用户到登陆页面:

我们来一步一步地理清思路:首先判断用户提交的数据是否通过了验证

public function postCreate() {
    $validator = Validator::make(Input::all(), User::$rules);
    if ($validator->passes()) {
        // 验证通过就存储用户数据
    } else {
        // 验证没通过就显示错误提示信息    
    }
}
}
로그인 후 복사

上面我们通过Input::all()来获取表单传过来的值,又调用User::$rules来获得验证规则,最后通过把这两个以参数的形式传入Validator::make()实现验证,下面的判断语句就很清晰了,验证通过后干嘛,没通过又该干嘛。思路清晰就OK。

接着我们再来完善我们的postCreate()代码:

if ($validator->passes()) {
    $user = new User;//实例化User对象
    $user->username = Input::get(&#39;username&#39;);
    $user->email = Input::get(&#39;email&#39;);
    $user->password = Hash::make(Input::get(&#39;password&#39;));
    $user->save();
    return Redirect::to(&#39;users/login&#39;)->with(&#39;message&#39;, &#39;欢迎注册,好好玩耍!&#39;);
} else {
    // 验证没通过就显示错误提示信息      
}
로그인 후 복사

上面的我们通过Input::get('fieldName')来获得相应的表单输入框的值,这里需要注意的是我们对密码进行了加密,因为我们都是棒棒的工程师,不会像之前的CSDN一样保存明文密码的,所以在密码这一栏我们使用Hash::make()来加密传入的密码。然后我们通过$user->save()来将我们的数据保存到数据库中。数据保存之后,我们用Redirect::to()将页面跳转到users/login,并通过width将注册成功的信息返回给用户。

Redirect::to()的参数规则是:controller/action。前面是控制起,后面就是具体的方法名。
上面是验证通过的情况,现在我们看看验证没有通过的情况:

if ($validator->passes()) {
    $user = new User;//实例化User对象
    $user->username = Input::get(&#39;username&#39;);
    $user->email = Input::get(&#39;email&#39;);
    $user->password = Hash::make(Input::get(&#39;password&#39;));
    $user->save();
    return Redirect::to(&#39;users/login&#39;)->with(&#39;message&#39;, &#39;欢迎注册,好好玩耍!&#39;);
} else {
    return Redirect::to(&#39;users/register&#39;)->with(&#39;message&#39;, &#39;请您正确填写下列数据&#39;)->withErrors($validator)->withInput();    
}
로그인 후 복사

这里如果用户没有通过验证,我让其重定向到注册页,并通过withErrors($validator)将错误信息传到注册页面,通过withInput()将没有输错的数据也传给注册页面(正确来说是传给register方法,不过你可以根据上面那样理解,个人觉得也还OK),这样一来,我们就有了错误信息和一些正确的表单信息(不用用户多次输入),以提高整个过程的用户体验。

再进一步,我们在开发的时候永远不要忘记一件很重要的事:安全。那么在这里我们需要POST提交表单,我们就要保证它不会被CSRF攻击,解决这个问题我们需要在UsersController里添加下面的代码:

public function __construct() {
    $this->beforeFilter(&#39;csrf&#39;, array(&#39;on&#39;=>&#39;post&#39;));
}
로그인 후 복사

构造方法请放在其他方法前面。

8.实现登录

接下来的一步就是创建login的视图文件了,我们依旧来到我们最熟悉的views/users/下,新建文件名为login.blade.php的文件,在里面放上以下的代码:

<p class="container">
<p class="row">
    <p class="col-md-4 col-md-offset-4">
        <p class="panel panel-default">
            <p class="panel-heading">
                <h3 class="panel-title">欢迎登录</h3>
            </p>
            <p class="panel-body">
                {{ Form::open(array(&#39;url&#39;=>&#39;users/signin&#39;, &#39;class&#39;=>&#39;form-signin&#39;)) }}
                <fieldset>
                    <p class="form-group">
                     {{ Form::text(&#39;email&#39;, null, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;邮箱&#39;)) }}
                    </p>
                    <p class="form-group">
                     {{ Form::password(&#39;password&#39;, array(&#39;class&#39;=>&#39;form-control&#39;, &#39;placeholder&#39;=>&#39;密码&#39;)) }} 
                    </p>
                     {{ Form::submit(&#39;马上登录&#39;,array(&#39;class&#39;=>&#39;btn btn-large btn-success btn-block&#39;)) }}
                </fieldset>
                {{ Form::close() }}
                  <hr/>
            </p>
        </p>
    </p>
</p>
</p>
로그인 후 복사

这里的一些要点跟register.blade.php一样,你不明白的话可以看看前面的。然后我们需要在UsersController里面定义getLogin()方法:

public function getLogin() {
    $this->layout->content = View::make(&#39;users.login&#39;);
}
로그인 후 복사

这里也是指定了content的模版为users/login.blade.php,道理跟前面一样。
这时候我们就可以注册新用户了,如果你的浏览器还保留在http://localhost:8000/users/register你可以试着输入你的用户名,邮箱,密码来注册一个,当然你也可以故意输错,看看会有什么信息返回给你。enjoy!

正常情况下,你注册完之后就吼跳到登录界面(已经写好了),但是我们在登录的时候也需要验证,如果你仔细看上面的login.blade.php的话,你会发现我们在这里将用户的登录表单提交地址设置为
'url'=>'users/signin',所以接下来的一步就是为UsersController补充postSignin()方法:

public function postSignin() {
    if (Auth::attempt(array(&#39;email&#39;=>Input::get(&#39;email&#39;), &#39;password&#39;=>Input::get(&#39;password&#39;)))) {
        return Redirect::to(&#39;users/dashboard&#39;)->with(&#39;message&#39;, &#39;欢迎登录&#39;);
    } else {
        return Redirect::to(&#39;users/login&#39;)->with(&#39;message&#39;, &#39;用户名或密码错误&#39;)->withInput();
    }
}
로그인 후 복사

这里我们使用Auth类来验证用户输入的信息是否和数据库的信息一致,如果验证通过,那么我们就将用户重定向到users/dashboard,如果没通过,就重新跳回登录页,情况跟注册时候几乎一模一样,我相信你看得懂。

既然是重定向到users/dashboard那么我们就来写写getDashboard()方法,到这里可能不用我说你都知道应该在UsersController添加下面的代码:

public function getDashboard() {
    $this->layout->content = View::make(&#39;users.dashboard&#39;);
}
로그인 후 복사

这里再多说一句,这个Dashboard的页面一般是在登录后才能看到的,为了限制一些没登录的人到处乱逛,我们只需要在UsersController中的构造函数加一行代码,变成这样的:

public function __construct() {
    $this->beforeFilter(&#39;csrf&#39;, array(&#39;on&#39;=>&#39;post&#39;));
    $this->beforeFilter(&#39;auth&#39;, array(&#39;only&#39;=>array(&#39;getDashboard&#39;)));
}
로그인 후 복사

现在逻辑是不是很清晰,我们接下来的一步自然是创建dashboard.blade.php文件了,这个从getDashboard()看出我们依然是将这个视图文件存在views/users/目录下,我们就简单地在dashboard.blade.php写上几行入门级的HTML:

<p class="welcome">
    <center>
    <a href="http://www.jellybool.com" target="_blank">
<img src="https://wt-prj.oss.aliyuncs.com/766e22da1e8c467a8af35d90c9185409/7680dd9d-c0e4-42ea-86b8-ddd63d07faa6.png" >
</a>
    </center>
    <center><h1>欢迎来到管理面板!</h1></center>
</p>
로그인 후 복사

写到这里我们还不能登录,因为在Laravel中auth过滤(filter)会默认将没登录的用户重定向到/login,但我们需要的是重定向到users/login,所以我们需要自定义我们的filter规则,打开app/filter.php,在代码的开始加上下面的代码:

Route::filter(&#39;auth&#39;, function()
{
    if (Auth::guest()) return Redirect::guest(&#39;users/login&#39;);
});
로그인 후 복사

到这里就大功告成了,如果你之前注册了一个用户,请用你的邮箱和密码到

http://localhost:8000/users/login

尝试登录一下,你会发现:Bingo!!!登录进去了!

9.实现退出

但是细心的你发现了没,我们还有一个需要完善的地方.....没错!就是我们的导航,我们已经登录进去了,它还是显示登录和注册,不科学啊!所以回到最初我们的main.blade.php在链接部分我们将它改为:

    <ul class="nav navbar-nav navbar-right hidden-sm">
          @if(!Auth::check())
               <li>{{ HTML::link(&#39;users/register&#39;, &#39;注册&#39;) }}</li>
               <li>{{ HTML::link(&#39;users/login&#39;, &#39;登陆&#39;) }}</li>
            @else
            <li>{{ HTML::link(&#39;users/logout&#39;, &#39;退出&#39;) }}</li>
            @endif
            </ul>
로그인 후 복사

没错,我们为导航这里加入了条件判断语句,如果用户没有通过Auth::check(),也就是没有登录的话,我们显示登录和注册,如果登录了就显示退出,

既然有了users/logout这个链接,那么我们就会想到在UsersController写这个getLogout()方法,而且这个方法是负责清理用户的登录信息的,所以:

public function getLogout() {
        if(Auth::check())
        { 
            Auth::logout();
        } 
    return Redirect::to(&#39;users/login&#39;)->with(&#39;message&#39;,&#39;你现在已经退出登录了!&#39;); 
    }
로그인 후 복사

这里我们Auth::logout()将用户的登录信息(主要就是session信息)清除掉,然后再将用户重定向到登录界面。

10.最后的最后

这个小教程写到这里就基本结束了,希望各位玩的愉快。最后多说一句:编程是我们最容易学习的超能力,永远要相信自己可以改变世界!

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何让Laravel框架在本地虚拟机快速安装

关于laravel使用Redis实现网站缓存读取的方法

위 내용은 Laravel을 통해 사용자 등록 및 로그인 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

왜 Bitget Wallet 거래소에 등록할 수 없나요? 왜 Bitget Wallet 거래소에 등록할 수 없나요? Sep 06, 2024 pm 03:34 PM

BitgetWallet 거래소에 등록할 수 없는 이유는 계정 제한, 지원되지 않는 지역, 네트워크 문제, 시스템 유지 관리 및 기술적인 장애 등 다양한 이유가 있습니다. BitgetWallet 거래소에 등록하려면 공식 웹사이트를 방문하여 정보를 입력하고 약관에 동의한 후 등록을 완료하고 신원을 확인하세요.

Laravel - 장인 명령 Laravel - 장인 명령 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

DeepSeek 공식 웹 사이트 입구 및 최신 홍보 활동 DeepSeek 공식 웹 사이트 입구 및 최신 홍보 활동 Feb 19, 2025 pm 05:15 PM

DeepSeek의 공식 웹 사이트는 이제 사용자에게 쇼핑 경험을 제공하기 위해 여러 할인 활동을 시작하고 있습니다. 신규 사용자는 10 달러짜리 쿠폰을 받기 위해 가입하고 전체 잠재 고객에게 15% 제한된 시간 할인을 즐기십시오. 추천 친구들도 보상을받을 수 있으며 쇼핑 할 때 선물의 구속을 위해 포인트를 축적 할 수 있습니다. 이벤트 마감일은 다릅니다. 자세한 내용은 DeepSeek 공식 웹 사이트를 방문하십시오.

Laravel - 장인 콘솔 Laravel - 장인 콘솔 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Console - Laravel 프레임워크는 명령줄을 통한 상호 작용을 위한 세 가지 기본 도구인 Artisan, Ticker 및 REPL을 제공합니다. 이번 장에서는 Artisan에 대해 자세히 설명합니다.

Laravel - 페이지 매김 사용자 정의 Laravel - 페이지 매김 사용자 정의 Aug 27, 2024 am 10:51 AM

Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법

Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Apr 01, 2025 pm 02:45 PM

Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Mar 31, 2025 pm 11:48 PM

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

참깨 오픈 도어 공식 웹 사이트 거래 플랫폼 참깨 오픈 도어 공식 웹 사이트 교환 등록 입구 참깨 오픈 도어 공식 웹 사이트 거래 플랫폼 참깨 오픈 도어 공식 웹 사이트 교환 등록 입구 Feb 28, 2025 am 10:57 AM

Gate.io Sesame Open은 피아트 통화 거래, 통화 거래, 레버리지 거래, 영구 계약, ETF 활용 토큰, 자산 관리, 초기 공모 및 기타 섹션을 포함하여 세계 최고의 블록 체인 디지털 자산 거래 플랫폼입니다. 사용자에게 보안, 안정성, 개방성 및 투명성을 제공합니다.

See all articles