牛骨文教育服务平台(让学习变的简单)
博文笔记

Laravel- Auth登录验证

创建时间:2017-04-06 投稿人: 浏览次数:5167

-- 文章仅供个人学习参考,如有不恰当的地方,希望前辈们指教。--

1、修改configauth.php配置文件

"model" => AppModelUsers::class,
"table" => "users",

2、 修改Users模型类如下:

use IlluminateDatabaseEloquentModel;
use IlluminateAuthAuthenticatable;
use IlluminateAuthPasswordsCanResetPassword;
use IlluminateFoundationAuthAccessAuthorizable;
use IlluminateContractsAuthAuthenticatable as AuthenticatableContract;
use IlluminateContractsAuthAccessAuthorizable as AuthorizableContract;
use IlluminateContractsAuthCanResetPassword as CanResetPasswordContract;

class Users extends Model implements AuthenticatableContract,  AuthorizableContract,  CanResetPasswordContract
{
  //使用auth验证必须继承接口
  use Authenticatable, Authorizable, CanResetPassword;
  //修改为自己的用户表
  protected $table = "users";
 
  protected $fillable = ["name", "email", "password"];

  protected $hidden = ["password", "remember_token"];
}

3、修改AuthController控制器

class AuthController extends Controller
{
  use ThrottlesLogins /* , AuthenticatesAndRegistersUsers*/ ; //因为没有注册功能可以将AuthenticatesAndRegistersUsers注释掉
  protected $redirectPath = "/admin";
  protected $redirectAfterLogout = "/auth/login";  //注销后的跳转地址

  public function __construct()
  {
    $this->middleware("guest", ["except" => ["getlogout"]]); //在中间件中排除 getlogout函数 ,否则无法注销
  }
  function login() {
    return view("admin.users.login");
  }
  function getlogout() {
  if(Auth::check()){
      Auth::logout();  //退出登录
  }
      return redirect("/auth/login");
  }
  function auth(Request $request) {
    $user=$request->only(["name","password"]);
    if(Auth::attempt($user,$request->remember)){ //验证密码 通过后合一用Auth::user() 获取登录用户信息 也可以使用 Auth::loginUsingId($user->id) 来登录
        return redirect()->intended("/admin");
    }else{
      return redirect("/auth/login")->withErrors(["login failed"])->withInput($request->except("password"));
    }
  }
  public function redirectPath()  //重构未登录时的跳转地址
  {
    return "/admin";
  }
}

4、修改文件不同文件 redirectPath

guest中间件:app/Http/Middleware/RedirectIfAuthenticated.php

public function handle($request, Closure $next)
  {
  if ($this->auth->check()) {
                return redirect("/admin");  //修改登录页面默认登陆后的跳转地址
  }
  return $next($request);
  }

auth中间件:app/Http/Middleware/Authenticate.php

public function handle($request, Closure $next)
    {
        if ($this->auth->guest()) {
            if ($request->ajax()) {
                return response("Unauthorized.", 401);
            } else {
                return redirect()->guest("auth/login");
            }
        }
        return $next($request);
    }

5、添加路由

Route::group(["namespace" => "Auth","prefix"=>"auth"],function(){ 
    route::get("/login","AuthController@login"); 
    route::get("/logout","AuthController@getlogout"); 
    route::post("/login","AuthController@auth"); 
});
route::get("/admin",["namespace" => "Admin","middleware" => "auth"],"AdminController@index");


参考教程:http://laravelacademy.org/tutorials/blog

GitHub:https://github.com/CiaraLi/blogtest



            
                
				
			
		
        	
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。