laravel-5 - 如何允许访客用户查看帖子,而无需登录
问题描述
我正在尝试让访客用户,即未登录的用户查看某些帖子。
我尝试添加访客身份验证,但它不起作用。我也很乐意将帖子的 URL 链接作为 slug 而不是 ID
例如 localhost:8000/news/1 应该是 localhost:8000/news/post-title
<?php
namespace App\Http\Controllers;
use App\News;
use Illuminate\Http\Request;
class NewsController extends Controller
{
function __construct()
{
$this->middleware('auth', ['except' => ['index']]);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$news= News::paginate(15);
return view('categories.news',compact('news'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('news.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//validate
$this->validate($request,[
'subject'=>'required|min:10',
'body' => 'required|min:20'
]);
//store
auth()->user()->news()->create($request->all());
//redirect
$news= News::paginate(15);
return view('categories.news', compact('news'));
}
/**
* Display the specified resource.
*
* @param \App\News $news
* @return \Illuminate\Http\Response
*/
public function show(News $news)
{
return view('news.single', compact('news'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\News $news
* @return \Illuminate\Http\Response
*/
public function edit(News $news)
{
return view('news.edit', compact('news'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\News $news
* @return \Illuminate\Http\Response
*/
public function update(Request $request, News $news)
{
if(auth()->user()->id !== $news->user_id){
abort(401, "Please Login");
}
$this->validate($request,[
'subject'=>'required|min:10',
'body' => 'required|min:20'
]);
$news->update($request->all());
return redirect()->route('news.show', $news->id)->withMessage('News Updated');
}
/**
* Remove the specified resource from storage.
*
* @param \App\News $news
* @return \Illuminate\Http\Response
*/
public function destroy(News $news)
{
if(auth()->user()->id !== $news->user_id){
abort(401, "Please Login");
}
$news->delete();
$news= News::paginate(15);
return view('categories.news', compact('news'));
}
}
这是我希望来宾用户能够查看的单个帖子刀片。
<div class="main-body">
<div class="clearfix">
<div class="main-body-content text-left">
<h1 style="font-size: 20px;font-weight: 800;" class="post-title">{{$news->subject}}</h1>
<h5>By <a href="">{{ Auth::user()->name }}</a></h5>
<div class="post-body">
<p>{!! $news->body !!}</p>
</div>
@if(auth()->user()->id==$news->user_id)
<div class="all-edit">
<div class="post-body">
<a href="{{route('news.edit',$news->id)}}">(Edit)</a>
</div>
<div class="delete">
<form action="{{route('news.destroy',$news->id)}}" method="POST">
{{csrf_field()}}
{{method_field('DELETE')}}
<input type="submit" value="Delete">
</form>
</div>
</div>
@endif
</div>
</div>
</div>
解决方案
您必须从“auth”的中间件中删除此路由。
推荐阅读
- c# - 当使用嵌套的 LambdaExpressions 编译 LambdaExpression 时,它们也会编译吗?
- terraform - 尝试使用堆栈输出列表作为模块输出
- javascript - 在跨度之间插入字符串变量
- css - Webpack(带有插件)是否可以缩小我的 CSS 文件,将其放在我的 dist 文件夹中,并将标签添加到 index.html
- javers - 有没有办法避免使用 Mongo 存储库在应用程序启动时创建索引?
- python - 如何检查大数据集Python中最大值的日期和时间
- python - 为什么我的 geopy 循环总是以 Killed: 9 结尾?
- java - 您可以从 CPD 检查中排除源文件吗?
- arrays - Swift 有内置的 isWord 函数吗?
- javascript - 使用 React 按下回车键时单击链接