我每个人都使用laravel 5.2默认身份验证但我希望用户只能以活动状态登录。
https://laravel.com/docs/5.2/authentication
在这个链接中他们给出了类似下面的方法
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
// The user is active, not suspended, and exists.
}
但我没有找到它位于laravel 5.2的位置。
我搜索过,但解决方案适用于以前的版本,而不适用于5.2。
所以请帮我登录只有活动状态的用户,这样就给我laravel 5.2而不是5.1或者以前的内置版本或自定义解决方案来解决问题
答案 0 :(得分:1)
假设您使用的是默认身份验证设置,则可以覆盖来自getCredentials
特征的AuthController
上的AuthenticatesUsers
方法。
protected function getCredentials(Illuminate\Http\Request $request)
{
return $request->only($this->loginUsername(), 'password') + ['active' => 1];
}
该方法返回Auth::attempt
login
方法AuthController
中传递给active
的凭据数组。正如其他人提到的那样,您需要在users
表上添加 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script>
<script>
$(document).ready(function(){
$("button").click(function(){
var env1 = document.getElementById("seldevid");
var env2 = document.getElementById("selstageid");
var env3 = document.getElementById("selprodid");
var apiname = $("#apinameid").val();
var apiurl = $("#apiurlid").val();
var actionvar;
$("#actionid").change(function() {
actionvar = $(this).val();
}).change();
if (env1.checked = true) {
var env = "Dev";
} else if (env2.checked = true) {
var env = "Stage";
} else if (env3.checked = true) {
var env = "Prod";
}
$.post("http://requestb.in/107fmof1",
{
apiName: apiname,
apiURL: apiurl,
environment: env,
action: actionvar
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>
字段。
答案 1 :(得分:0)
该示例仅表示您可以在尝试登录时添加自定义字段。
您需要在用户表中添加一个额外的字段,如isActive。
完成此操作后,您可以检查用户是否在您的应用程序中处于活动状态。
if($user->isActive) {
// do something
}