1 添加路由

//注册
Route::get('/register',"RegisterController@index");
Route::post('/register',"RegisterController@register"); //登录
Route::get('/login',"LoginController@index");
Route::post('/login',"LoginController@login");
Route::get('/logout',"LoginController@logout");

2. 配置app下的默认守卫为 web 服务提供者为users

对应的model为新建的

App\Models\User::class
<?php

return [

    'defaults' => [
'guard' => 'web',
'passwords' => 'users',
], 'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
], 'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
], 'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
], // 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
], 'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
], ];

  3 新建app\Models文件夹 Usermodel 继承 Authenticatable

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{ protected $table = "users";
public $primaryKey = 'id'; protected $fillable = [
'name', 'password',
]; protected $hidden = [
'password', 'remember_token',
];
}

 4 建立控制和模板

LoginController.php
<?php namespace App\Http\Controllers; use App\Constants\ErrorCode;
use Brady\Tool\Data\Deal;
use Brady\Tool\Exception\ExceptionResult;
use Brady\Tool\Response\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect; class LoginController extends Controller
{
public function index()
{
return view('login/index');
} public function login(Request $request)
{ $data = $request->input();
$data = Deal::trim($data); $name = $data['name'];
$password = $data['password']; try{
if(empty($name)){
ExceptionResult::throwException(ErrorCode::USER_NOT_EMPTY);
} if(empty($password)){
ExceptionResult::throwException(ErrorCode::PASSWORD_NOT_EMPTY);
} $is_remeber = boolval(isset($data['is_remember']));
if(Auth::attempt(['name'=>$name,'password'=>$password],$is_remeber)) {
return redirect('/posts');
} else {
ExceptionResult::throwException(ErrorCode::LOGIN_FAILED);
} } catch (ExceptionResult $e){
return Redirect::back()->with('error', $e->getMessage())->withInput();
}
} public function logout()
{
Auth::logout();
return redirect('/login');
}
}

  

RegisterController.php
<?php namespace App\Http\Controllers; use App\Constants\ErrorCode;
use Brady\Tool\Exception\ExceptionResult;
use Brady\Tool\Response\Response;
use Illuminate\Http\Request;
use App\Models\User; class RegisterController extends Controller
{ public function index()
{ return view('register/index');
} public function register(Request $request)
{
try{ $data = $request->input();
if(empty($data['name'])){
ExceptionResult::throwException(ErrorCode::USER_NOT_EMPTY);
} if(empty($data['password'])){
ExceptionResult::throwException(ErrorCode::PASSWORD_NOT_EMPTY);
} if(empty($data['password_confirmation'])){
ExceptionResult:throwException(ErrorCode::PASSWORD_RE_NOT_EMPTY);
}
if($data['password'] != $data['password_confirmation']){
ExceptionResult::throwException(ErrorCode::PASSWORD_RE_NOT_SAME);
} $user = new User(); $userExists = $user->where('name',$data['name'])->first();
if(!empty($userExists)){
ExceptionResult::throwException(ErrorCode::USER_EXISTS);
} $user->name = $data['name'];
$user->password = bcrypt($data['password']);
$user->save();
Response::success($user); } catch (ExceptionResult $e){
Response::error($e->getCode(),$e->getMessage());
}
}
}

  

登录模板  index.blade.php

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico"> <title>登陆</title> <!-- Bootstrap core CSS -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> <!-- Custom styles for this template -->
<link href="http://v3.bootcss.com/examples/signin/signin.css" rel="stylesheet"> <script src="/lib/jquery/jquery-2.2.1.js"></script>
<script src="/lib/layer/layer.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head> <body> <div class="container" id="app"> <form class="form-signin" method="POST" action="/login">
{{csrf_field()}}
<h2 class="form-signin-heading">请登录</h2>
<label for="inputName" class="sr-only">用户名</label>
<input v-model="form.name" autocomplete="off" type="text" value="{{ old("name") }}" name="name" id="inputName" class="form-control" placeholder="用户民" autofocus>
<label for="inputPassword" class="sr-only">密码</label>
<input v-model="form.password" autocomplete="off" type="password" value="{{ old('password') }}" name="password" id="inputPassword" class="form-control" placeholder="密码" >
<div class="checkbox">
<label>
<input v-model="form.is_remember" type="checkbox" value="{{ old('is_remember') }}" name="is_remember"> 记住我
</label>
</div> @if (session('error'))
<div class="alert alert-danger">
{{ session('error') }}
</div>
@endif
<button class="btn btn-lg btn-primary btn-block" type="submit" id="login">登陆</button>
<a href="/register" class="btn btn-lg btn-primary btn-block" type="submit">去注册>></a>
</form> </div> <!-- /container --> <script>
// var app = new Vue({
// el: '#app',
// data: {
// form:{
// name:'',
// password:'',
// _token:'',
// is_remember:0
// }
// },
// methods:{
// login:function(){
// this.form._token = $("#_token").val()
// axios.post('/login', this.form)
// .then(function (response) {
// var res = response.data;
// if(res.code != 200){
// layer.msg(res.msg,{icon:2});
// console.log(res.msg )
// return
// } else {
// layer.msg("登录成功",{icon:1});
// setTimeout("location.href='/posts'",2000);
// }
// })
// .catch(function (error) {
// console.log(error);
// });
// }
// }
// })
</script>
</body>
</html>

  

注册 index.blade.php

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico"> <title>注册</title> <!-- Bootstrap core CSS -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="http://v3.bootcss.com/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> <!-- Custom styles for this template -->
<link href="http://v3.bootcss.com/examples/signin/signin.css" rel="stylesheet"> <script src="/lib/jquery/jquery-2.2.1.js"></script>
<script src="/lib/layer/layer.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head> <body> <div class="container" id="app"> <div class="form-signin" >
<input type="hidden" id="_token" name="_token" value="{{csrf_token()}}">
<h2 class="form-signin-heading">请注册</h2>
<div>
<label for="name" class="sr-only">用户名</label>
<input v-model="form.name" type="text" name="name" id="name" class="form-control" autocomplete="off" placeholder="用户名" autofocus style="margin-bottom:10px;">
<label class="sr-only">密码</label>
<input v-model="form.password" type="password" name="password" id="inputPassword" autocomplete="off" class="form-control" placeholder="输入密码" > <label class="sr-only" >重复密码</label>
<input v-model="form.password_confirmation" type="password" name="password_confirmation" class="form-control" placeholder="重复输入密码" > <button class="btn btn-lg btn-primary btn-block" type="submit" @click="registor">注册</button>
</div> </div> </div> <!-- /container --> <script>
var app = new Vue({
el: '#app',
data: {
form:{
name:'',
password:'',
password_confirmation:'',
_token:''
}
},
methods:{
registor:function(){
this.form._token = $("#_token").val()
axios.post('/register', this.form)
.then(function (response) {
var res = response.data;
if(res.code != 200){
layer.msg(res.msg,{icon:2});
console.log(res.msg )
return
} else {
layer.msg("注册成功",{icon:1});
setTimeout("location.href='/login'",2000);
}
})
.catch(function (error) {
console.log(error);
});
}
}
})
</script>
</body>
</html>

  

简单使用auth认证实现登录注册的更多相关文章

  1. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  2. django中间件 csrf auth认证

    django中间件 能做全局访问频率限制,身份校验,黑名单,白名单 用法: 新建一个文件夹,文件夹新建一个py文件,文件中写如下代码 注意点:你写的类必须继续MiddlewareMixin from ...

  3. SSM博客登录注册

    我的博客采用的是 spring+springmvc+mybatis框架,用maven和git管理项目,之后的其他功能还有待进一步的学习. 首先新建一个maven项目,我的项目组成大概就这样, 建立好项 ...

  4. 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销

    在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...

  5. 7. Swift 基于Xmpp和openfire实现一个简单的登录注册

    1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...

  6. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  7. 简单登录注册实现(Java面向对象复习)

    简单登录注册的实现(面向对象的复习) 需求: 设计用户类,包含用户名和密码两个属性 设计LoginDemo类设计用户登录方法 用户有三次登录机会,如果连续三次登录失败则退出程序 功能实现页面:     ...

  8. tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册

    tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册 引言 #在数据库,所谓表关系,只是人为认为的添加上去的表与表之间的关系,只是逻辑上认为的关系,实际上数据库里面的表之间 ...

  9. Angular之简单的登录注册

    使用Angular实现了一个简单的登录注册的功能........ 涉及到的Angular知识点很少 主要是这个功能的实现...(*^__^*) 嘻嘻…… 里面涉及到的知识点记录: 1.本地存储的操作 ...

随机推荐

  1. Spring cloud微服务安全实战-6-7jwt改造总结

    限流的改造. 同样注意,不要声明成Spring的Bean 在上面声明Rateliiter 如果能获取到权限继续往下走,没权限就返回,to many request的错误信息. 加到过滤器链上 加载Sp ...

  2. 提供对字符串的全角->半角,半角->全角转换

    package com.opslab.util.algorithmImpl; import com.opslab.util.StringUtil; /** * 提供对字符串的全角->半角,半角- ...

  3. VS2010/VS2012/VS2015下openGL环境配置(转)

    按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...

  4. pca数学原理(转)

    PCA的数学原理 前言 数据的向量表示及降维问题 向量的表示及基变换 内积与投影 基 基变换的矩阵表示 协方差矩阵及优化目标 方差 协方差 协方差矩阵 协方差矩阵对角化 算法及实例 PCA算法 实例 ...

  5. jpa序号/数字占位符?1/?2

    这里的入参nodeId对应占位符?1,入参severity对应?2:缺点是,序号必须是顺序的,按参数顺序严格对应 @Modifying @Transactional @Query(value = &q ...

  6. SQL网页端在线自定义查询工具

    TreeSoft数据库管理系统,是用JAVA开发,基于网页的数据库SQL查询工具.功能包括:数据库的展示,库表的展示,表字段结构的展示,SQL语句的在 线编辑批量执行,表结构的在线设计维护,数据的在线 ...

  7. CF1197D Yet Another Subarray Problem

    思路: 使用动态规划,在经典的最大子段和解法基础上进行扩展.dp[i][j]表示以第i个数为结尾,并且长度模m等于j的所有子段的最大cost. 实现: #include <bits/stdc++ ...

  8. 【VS开发】windows下的signal

    在windows下,信号机制简单来说是通过工作线程实现的,该线程运行于相对优先级THREAD_PRIORITY_HIGHEST,当信号产生时,windows生成该线程执行信号处理逻辑,由于该线程优先级 ...

  9. 【GStreamer开发】GStreamer基础教程08——pipeline的快捷访问

    目标 GStreamer建立的pipeline不需要完全关闭.有多种方法可以让数据在任何时候送到pipeline中或者从pipeline中取出.本教程会展示: 如何把外部数据送到pipeline中 如 ...

  10. Valgrind工具------可以分析内存泄漏

    Valgrind 是个开源的工具,功能很多.例如检查内存泄漏工具---memcheck. 安装: 1)官网下载:http://www.valgrind.org/downloads/ , 下载tar.b ...