我有一个没有用户角色的应用程序,因为除1之外的所有函数都对所有用户开放。
由于我们增加了一个短信通知功能,这是一个费用,我想限制谁可以使用这个功能背后的密码。
因此,在我目前的表格中,我有以下几点:
<div class="row">
<div class="col-sm-8">
<div class="card">
<h2 class="text-center">Send SMS Notification</h2>
<p class="text-center">Please note a password is required for this function</p>
<div class="card-header card-header-rose card-header-text">
<div class="card-text">
<h4 class="card-title">Enter Message</h4>
</div>
</div>
{!! Form::open(array('action' => ['NotificationController@sms'],'method'=>'POST', 'class'=>'form-horizontal')) !!}
<div class = "card-body">
@if (count($errors)>0)
<div class = "alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class = "row">
<label class = "col-sm-2 col-form-label">Message: </label>
<div class = "col-sm-6">
<div class = "form-group">
<input type = "text" class = "form-control" maxlength="160" name="message">
</div>
</div>
</div>
</div>
<div class = "card-footer">
<div class = "row">
<div class = "col-md-4">
<div class="pull-left">
<a href="{{action('HomeController@index')}}" class = "btn btn-danger">Cancel</a>
</div>
</div>
<div class ="col-md-4">
<button type="submit" class="btn btn-success">Send SMS Notification</button>
</div>
</div>
</div>
{!!Form::close()!!}
</div>
</div>
</div>
所以想法是当发送短信通知是按下,系统将要求一个密码,用户需要输入。
我不知道如何添加这个功能,谷歌也没有帮上忙。目前,发送消息的代码很好,这里没有任何问题。
欢迎其他建议。
谢谢
发布于 2022-06-14 00:36:03
我想你是在找Laravel Basic Auth。基本八月配备了拉勒维尔奥特的盒子。
您需要一个包含电子邮件和密码的用户表。您可以使用仅接受身份验证用户才能获得下一个请求的中间件保护路由。
在您的情况下,如果您想限制用户访问sms发送功能,您将不得不在用户模型中添加某种差异,比如您控制哪些用户可以发送或不能发送sms的策略。
Http basic auth expect在Basic Auth表单中以用户名的形式找到电子邮件。
你唯一需要做的就是
Route::get('/sendsms', [SmsController::class,'index'])->middleware('auth.basic');
在拉勒维尔博士中有更多关于这方面的信息
发布于 2022-06-14 00:50:50
除了中间件之外,您还可以做简单的签入控制器(假设您存储密码,因为它应该存储),只需在发送sms表单中添加密码字段即可。
$validated = request()->validate([
'password' => 'required',
// other rules here
]);
// take it from users table or where you're going to store passwords
$hashedOriginal = Hash::make('smspassword');
$isPasswordValid = Hash::check($validated['password'], $hashedOriginal);
if (!$isPasswordValid) {
abort('401');
}
// your send sms code next
在一般的中间件中,您可以很容易地扩展密码保护函数,因此,如果发送sms不是最后一个密码保护函数的可能性,您最好坚持使用中间件。
https://stackoverflow.com/questions/72613192
复制