Laravel注册、登陆及用户认证
2017-07-24 22:23
387 查看
Laravel中实现用户登录认证非常简单。实际上,几乎所有东西都已经为你配置好了。 对于绝大多数应用而言,只需使用默认认证配置即可,不需要做什么改动。下面说一下我用Laravel5.2 实现的流程,不愧为最优雅的php框架,一共写了不超过50行代码搞定。
Laravel 5.2提供了两个开箱即用的用户认证(Authentication)控制器,用来判断用户是否登录。位于 App\Http\Controllers\Auth
命名空间下,AuthController
处理新用户注册和登陆, PasswordController
用于帮助用户找回密码。每个控制器都使用
trait 来引入它们需要的方法。对很多应用而言,你根本不需要修改这两个控制器。
Laravel 通过运行如下artisan命令可快速生成认证所需要的路由和视图:php artisan make:auth
运行该命令会生成注册和登录视图,以及所有的认证路由,同时生成
HomeController,因为登录成功后会跳转到该控制器下的动作。
全自动新手大礼包......
正如上面所提到的,php
artisan make:auth
命令会在 resources/views/auth
目录下创建所有认证需要的视图。make:auth
命令还创建了 resources/views/layouts
目录,该目录下包含了应用的基础布局文件app.blade.php 。所有这些视图都使用了
Bootstrap CSS 框架,你也可以根据需要对其进行自定义。不过相信我,以绝大多数的程序员审美,都没有自带带样板好看.........
如果注册时,没有反应,数据库没有存进数据,可能打印出错误信息,如你注册用户名小于3位不合规范。以登陆为例,laravel 的默认要求是:
[php] view
plain copy
print?
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
即:用户名和Email地址是必填项,最大为255字节。email也必须为email格式并且是独一无二的,不能和已注册用户相同。密码不能少于6位且需要再次确认。这和我们平时见到注册一样,很好理解。
如果自己写按钮和样式的话,可以使用如下代码逻辑:
plain copy
print?
<span style="font-size:18px;">@if (Auth::guest()){
<a href="{{ url('/login') }}">登陆</a>
<a href="{{ url('/register') }}"">注册</a> </span>
[php] view
plain copy
print?
<span style="font-size:18px;">}
@else{
{{ Auth::user()->name }} <a href="{{ url('/logout') }}"class="n2">登出</a>
}
@endif //如果用户访客登陆,则显示登陆/注册。如果已登陆,则显示用户名/登出。</span>
Home视图
同时Laravel也自动生成了 HomeController控制器,和 home视图 当一个用户成功进行登录认证后,默认将会跳转到
/home,你可以通过在
AuthController中设置
redirectTo属性来自定义登录认证成功之后的跳转路径:
protected $redirectTo = '/home';
而当一个用户登录认证失败后,则会默认 跳转回登录表单对应的页面重新登陆。
判断当前用户是否通过认证
要判断某个用户是否登录到应用,可以使用
Auth的
check方法,如果用户通过认证则返回
true:
if (Auth::check()) { // The user is logged in... }
我按照上面的方法,设置好登陆按钮,但是登陆后再点击原来的首页,就会报出如下错误:
[plain] view
plain copy
print?
<span style="font-size:18px;">FatalErrorException in ClassLoader.php line 314:
Maximum function nesting level of '100' reached, aborting! </span>
这时候删除cookies,就可以去除登陆状态,再登陆就正常了。我猜想是系统登陆后状态有变化,却没有判断用户状态引发的错误,所一我每个页面都加了下面这三行代码,笨人有笨方法吧.....反正不再报错了~~
[php] view
plain copy
print?
<span style="font-size:18px;">@if (Auth::check()) //检查用户认证,但什么也不做......
@else
@endif</span>
用户授权
这也引出了用户授权问题(Authorization),即用户登录后的身份识别问题,以便后续的用户权限控制。其余路由保护、登录失败次数限制、使用Facebook、微博登陆等
都有非常简便的实现方法。大家可以去看官方文档自己研究。
相关文章推荐
- [Laravel 5.2]二、注册、登陆及用户认证
- YII2中自定义用户认证模型,完成登陆和注册
- Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能以及登陆才能访问后台的功能的一种实现方法
- python 04 用户注册、注销、登陆
- Laravel 5.2 使用 JWT 完成多用户认证
- 《java入门第一季》模拟用户登陆注册案例集合版
- django开发(3)-用户登录注册和认证
- Laravel 5 中使用 JWT(Json Web Token) 实现基于API的用户认证
- 通过操作jQuery利用正则验证用户登陆注册
- JSP用户注册登陆注销JSP页面
- Laravel 5.2 中多用户认证实现(前台和后台登录)
- Android开发中实现用户注册和登陆的代码实例分享
- python 04 用户注册、注销、登陆
- 用户登陆注册案例分析
- Laravel - 已登陆用户再次查看登陆页面的自动跳转设置
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作
- 使用JSP处理用户注册和登陆
- PHP 实现用户注册及登陆
- Laravel实现用户注册和登录