我正在验证我的用户,并将其重定向到仪表板(如果凭据正确)。我想保护仪表板路由并添加中间件auth,但现在它总是重定向到登录页面。
路线。php
Route::get('login', array('uses' => 'HomeController@showLogin'));
Route::post('login', array('uses' => 'HomeController@doLogin'));
Route::get('logout', array('uses' => 'HomeController@doLogout'));
Route::group(['middleware' => 'auth'], function() {
Route::get('/', function () {
return view('dashboard');
});
Route::get('dashboard', function () {
return view('dashboard');
});
});
HomeController.php
public function showLogin(){
return View::make('login');
}
public function doLogin(Request $request){
$rules = array(
'email' => 'required|email',
'password' => 'required|alphaNum|min:3'
);
$validator = Validator::make($request::all(), $rules);
if ($validator->fails()) {
return Redirect::to('login')
->withErrors($validator)
->withRequest($request::except('password'));
}
else {
$userdata = array(
'email' => $request::get('email'),
'password' => $request::get('password')
/*'password' => Hash::make($request::get('password'))*/
);
if (Auth::attempt($userdata)) {
$userid = Auth::id();
return redirect()->intended('/');
} else {
return Redirect::to('login');
}
}
}
public function doLogout()
{
Auth::logout();
return Redirect::to('login');
}
中间件Authenticate.php
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('login');
}
}
return $next($request);
}
中间件重定向已验证。php
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/');
}
return $next($request);
}
很抱歉聚会迟到了,但是在找了我很久之后,我不得不把我的中间件从['middleware'=
我希望这能有所帮助
我不知道为什么你的代码不工作,但你可以尝试替换:
if (Auth::attempt($userdata)) {
$userid = Auth::id();
return redirect()->intended('/');
}
与:
if (Auth::attempt($userdata)) {
$userid = Auth::id();
return redirect('dashboard');
}
从预期方法的API文档:
创建一个新的重定向响应到先前预期的位置。
是给你一些错误,因为它会回到上一个位置,而不是下一个位置。
更新1:
我会采用以下方法。
制作自己的中间件,名为useralreadylogedin
php artisan make:middleware UserAlreadyLoggedIn
打开UserAlreadyLoggedIn.php并使用以下代码更新句柄方法:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->check()) {
return $next($request);
}
return redirect('login');
}
在app/Http/Kernel中注册它。php
数组中的文件$routeMiddleware
数组:
$routeMiddleware = [
'user_already_logged_in' => \App\Http\Middleware\UserAlreadyLoggedIn::class,
];
通过设置usersessioncontroller
php artisan make:controller UserSessionsController --plain
在usersessioncontroller
中放置\u构造函数
方法:
/**
* Check if the user is already logged in.
*
* @return void
*/
public function __construct()
{
$this->middleware('user_already_logged_in');
}
路线。php
Route::get('login', 'HomeController@showLogin');
Route::post('login', 'HomeController@doLogin');
Route::get('logout', 'HomeController@doLogout');
// Replace the dashboard code inside the dashboard method..
Route::get('dashboard', 'UserSessionsController@dashboard');
再次,我将创建一个名为UserIsAClient
的中间件,并在句柄
方法中替换if
块:
if(auth()->guest()) {
return $next($request);
}
return redirect('dashboard');
然后在家庭控制器
的
构造方法中:
/**
* Check if the user is already logged in.
*
* @return void
*/
public function __construct()
{
// Register the middleware in Kernel.php file
$this->middleware('user_is_guest');
}
希望这能帮到你。快乐编码。干杯。
遵循这个指南:https://www.youtube.com/watch?v=bqkt6eSsRZs 添加了从laravel docs的auth路由 创建登录/注册视图 创建 /home路线 自定义AuthController: 尝试访问身份验证/登录时,我遇到以下错误: 请求中出现错误异常。php第775行:。。未根据请求设置会话存储。 已将身份验证路由移动到中间件组。 成功注册,在数据库和会话
我在auth中间件方面遇到了一些问题。我将中间件放在一个路由组中,并回滚了users表。我希望应用程序将我重定向到我的登录/搜索页面,但它没有这样做,它只是给了我“尝试获取非对象的属性”,它指的是我的仪表板视图中的函数(我不应该访问该函数)。 这是我的路线代码: 以下是我的观点: 另外,我不确定从数据库中删除用户是否意味着Laravel将自动删除用户会话。 谢谢你的帮助!
在不生成Laravel默认身份验证控制器的情况下,我创建了自己的登录和注册控制器。 我的路线是这样的 用于登录 登记 一切都很好。现在我需要一件事。每当我放置中间件时,一个未经身份验证的用户将被重定向到我的自定义登录页面路由到。 如何做到这一点?
Java 6 Servlet 2.5 WebLogic 12.1 Spring MVC 4.3.4.release Spring Security 4.2.0.版本 我实现了一个CustomAuthenticationProvider来根据Oracle db对用户进行身份验证:用户实际上是db用户,因此我尝试连接到db以检查用户/密码,如果结果是肯定的,则加载权限。 除非发生登录错误,否则配置工作
在此之前,我已经成功地在cakePHP中开发了身份验证机制,但是这次我不知道是什么错误,每次我都会收到错误用户名/密码的提示。我使用过Auth组件,下面是详细信息: 型号名称:用户,许可证 示例用户信息:用户名:密码:这是的md5,我不知道它在这种情况下是否重要,但我已经为我的控制器启用了管理路由 应用程序控制器。php: } 登录。ctp供用户查看 下面是UsersController的logi
试图阻止来宾用户的路由。当有人点击时,它将检查用户是否以管理员身份登录。如果admin然后它工作正常,如果代理然后它重定向到登录页面,但如果我作为访客用户点击链接,它不会将我重定向到登录页面,而是显示一些错误: 路由中的错误异常。php第53行:尝试获取非对象的属性。 这是我的路线。php文件: