我正在尝试实现一个功能,在登录后,用户会根据其角色重定向到URL。我已经设置了角色部分,但是在登录后立即测试用户的属性时遇到了问题。
我按照这里的说明创建了一个用户登录页面。我有一个看起来像这样的AuthController
:
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller {
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/test';
...
}
我的\uu construct()
函数验证用户,但我不知道如何在登录后立即访问用户对象。这就是我目前拥有的:
public function __construct() {
$this->middleware('guest', ['except' => 'getLogout']);
if ( \Auth::check() ) {
$user = \Auth::user();
if ( $user->admin() ) {
// an admin
$this->redirectTo = '/admin';
} else {
// it's a client
$this->redirectTo = '/client/dashboard';
}
}
$user = \Auth::user();
if ( is_object($user) ) {
} else {
$this->redirectTo = '/auth-not-object';
}
}
当我第一次尝试使用管理员帐户登录时,我会进入路径/auth not object
,因为此时没有任何经过身份验证的用户对象。
在尝试登录后,但是得到了一个糟糕的重定向,当我重新访问/log
url时,我被重定向到/home
,我相信这是这个类使用的特性中的默认$reDirectTo
。这意味着我们已经传递了AuthController__construct()
方法,而没有更改$reDirectTo
,即使有一个经过身份验证的用户。
我还发现了其他问题,比如如何在Laravel 5.2中的登录条件上添加额外的逻辑,以及如何在登录后将Laravel重定向到url,但我不知道如何应用这些答案。例如,第二个问题的公认答案显示了新方法,getCredentials()
和login()
,它们在poster的原始类中不存在。我不确定在我的代码库中添加它们的类是什么,或者从哪里调用它们。
其他类似的答案显示了一种完全不同的用户身份验证方法,例如。似乎,要使用该解决方案,我需要重新编写代码,并放弃使用traits,其中包括登录限制等额外功能。
是否有一种方法可以在登录后根据角色重定向用户,同时仍然使用这些内置特性?
我不确定5.1身份验证是否与5.2身份验证相同,但如果相同,请从构造中删除所有这些,并添加以下方法:
protected function handleUserWasAuthenticated( Request $request, $throttles, $guard )
{
if ($throttles) {
$this->clearLoginAttempts( $request );
}
if ( method_exists( $this, 'authenticated' ) ) {
return $this->authenticated( $request, Auth::guard( $guard )->user() );
}
return redirect()->intended( $this->redirectTo );
}
这是确定重定向的方法,您可以访问用户对象。
编辑
我收回上面的内容,只需将以下内容添加到您的控制器中;
protected function authenticated( $request, $user ) {
return redirect()->intended( $user->admin() ? '/admin' : '/client/dashboard' );
}
那应该很好用
我想在登录到我的索引页面(index.jsp)后进行重定向,实际上我的登录可以正常工作,但ajax支持缺少重定向。 她是我的登录名。jsp 这是我的登录 我的struts配置文件: 对于DAO部分是: 公共字符串验证(字符串用户名,字符串userpass)抛出SQLException,Exception{ 谢谢你的帮助。
记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano
Reducer.js 我想在成功登录后重定向/主页。我如何重定向?
我使用设计与Rails为我的用户登录。这一切都很好,但是,我无法得到一个特定的重定向工作。 我是rails新手,所以我做事的方法可能不正确。 本质上,通过一个例子,我允许用户喜欢一个帖子。然而,他们需要登录才能这样做。我在我的控制器中创建了一个名为“喜欢”的动作,控制器具有设计过滤器 此时将显示登录页面。一旦用户登录,我想将他们重定向回他们喜欢的帖子,并调用“like”操作。 我的控制器看起来像
问题内容: 我正在做一个简单的论坛,由一系列论坛组成,每个论坛分别代表首页,主题,postitit,登录名和用户列表页面。在某些页面上,当用户未登录时会出现一个链接。 我想要实现的是在登录后触发重定向(在RequestDispatcher上使用forward()),以便浏览器返回到用户在单击登录链接之前所在的页面。为此,我看到了两种解决方案。 第一种解决方案是使用带有登录按钮的HTML 和一个不可
每个人登录后,我一直无法使用Laravel重定向。连接工作,在我登录后,它重定向到一个空白页面,但如果我更改url路径,我可以访问不同的网页。我们将不胜感激!我正在使用LDAP进行连接,它正在工作。 请让我知道,如果有任何其他代码,我应该提供。 非常感谢。 (重定向IfAuthenticated.php) 命名空间应用程序\ Http\中间件; 使用闭包;使用Illumb\Support\Faca