首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Laravel 4中实现登录功能?

如何在Laravel 4中实现登录功能?
EN

Stack Overflow用户
提问于 2014-12-05 01:15:36
回答 1查看 284关注 0票数 0

我有3种用户类型:

  1. 管理员
  2. 分配器
  3. 内部

我在user type的登录上有个问题。()

当我的用户输入为Admin时,我可以登录。当我的用户类型是分发服务器时,我可以登录。

但是当我的用户类型是内部的时,我不能登录。连线?

我在AccountController.php中查看我的登录函数中的代码的每一行。我没注意到那里有什么窃听器。如果你们注意到那里有虫子--请告诉我。

这对我会有很大的帮助。

这是我的登录功能

GET

代码语言:javascript
运行
复制
public function getSignIn(){
    return View::make('account.signin');
}

POST

代码语言:javascript
运行
复制
public function postSignIn() {
    $validator = Validator::make( Input::only('username','password'),
        array(
            'username'       =>'required',
            'password'       =>'required'
            )
        );
    if ($validator->fails()) {
        return Redirect::route('account-sign-in-post')
        ->with('error','Username/Password Wrong or account has not been activated !')
        ->withErrors($validator);
    }

        // Remember Me
    $remember = (Input::has('remember')) ? true : false ;
    $auth = Auth::attempt(array(
        'username' => strtolower(Input::get('username')),
        'password' => Input::get('password'),
        'active' => 1),
    $remember);


    // Keep track on log-in information of the user.
    if(Auth::check()){
        $user = Auth::user();
        $user->last_logged_in = Input::get('created_at');
        $user->logged_in_count = $user->logged_in_count + 1 ;
        $user->is_online = '1';
        $user->save();
    }



    if($auth) {
        return Redirect::to('/')
        ->with('success','You have been successfully logged in.')
        ;
    } 
    else {
        return Redirect::route('account-sign-in')
        ->with('error','Username/Password Wrong or account has not been activated !')
        ->withInput(Input::except('password'))
        ->withErrors($validator);
    }

}

VIEW

代码语言:javascript
运行
复制
@extends ('layouts.form')

@section('content')

<style type="text/css">
    .signin{
        text-align: center;
    }
    #forgetpassword{
        /*color:#5cb85c;*/
        color:silver;

    }
</style>

<form class="form-horizontal" role="form" action=" {{ URL::route('account-sign-in-post')}}" method="post" >


 @if ($errors->has('username')){{ $errors->first('username')}} @endif
 <div class="form-group">
    <label for=""> Email </label>
    <input placeholder="Email"  type="text" class="form-control" required name="username" {{ ( Input::old('username')) ? 'value="'.e(Input::old('username')).'"' : '' }}>
</div><br>



@if ($errors->has('password')){{ $errors->first('password')}} @endif
<div class="form-group">
    <label for=""> Password </label>
    <input placeholder="Password"  type="password" class="form-control" required name="password">
</div><br>


<br>


<button type="submit" class="btn btn-success btn-sm btn-block ">Sign In </button>


    {{ Form::token() }}


</form><br>


<div class="col-lg-12 text-center">

    <a id="forgetpassword" href="{{ URL::route('account-forgot-password') }}"> Forget Password </a> <br> 


</div>



@stop  

我确信我输入了正确的用户名和密码,因为我再次检查了我的数据库。

它不断地把我转回到我的登录页面。使用(“错误”、“用户名/密码错误或帐户未被激活!”)

有人能告诉我,如果我做了什么不该做的事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-06 16:51:54

在您的情况下,您应该在auth函数中检查您的Sign_In变量。

根据你的代码,

代码语言:javascript
运行
复制
$auth = Auth::attempt(array(
            'username' => strtolower(Input::get('username')),
            'password' => Input::get('password'),
            'active' => 1),
        $remember);

记住,这些都是需要确保的事情

  • username必须与数据库匹配
  • password必须与数据库匹配
  • 用户active必须为1

因此,如果其中任何一个都失败了,它就会让您从STOP登录。

  • 既然你对用户名和密码很确定,那么user active呢?
  • 你查过是否是1吗?

If Not

在您的设置密码功能或任何地方,您通常设置您的用户活动。

就这么做吧:

代码语言:javascript
运行
复制
$user->active = '1';
$user->save();

让我知道这是否有效!!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27307232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档