我正在尝试在多个域上实现单点登录.这个概念非常简单,即发送唯一的用户令牌,然后验证这些令牌以找到用户,然后将其登录.
现在在验证令牌然后抓住用户之后,我做了类似的事情
$loggedInUser = Auth::loginUsingId($user->id, true);
Run Code Online (Sandbox Code Playgroud)
现在我有一个自定义中间件,它首先检查登录用户,即
Auth::Check()
Run Code Online (Sandbox Code Playgroud)
以上工作首次正常.但是刷新时Auth :: check()没有经过验证.我也尝试使用所有不同的会话驱动程序,但仍然无法正常工作.
我在laravel 5.2上使用了类似的代码,它确实有效.但是在laravel 5.3上它没有验证持久性请求.
编辑:让我告诉你我的代码 我没有修改AuthServiceProvider或任何其他警卫.我在目录中有用户模型,但我修改了auth.php中的路径.
这是domain1指向的路线:
http://domain2.com/ {{$ role}}/{{$ route}}/singlesignon/{{$ token}}
然后通过loginController中的verifySingleSignOn方法获取它,该方法接收用户从其他域进入的角色和路由以及令牌.然后,用户将重定向到相同的路由,但在domain2上.在这里,我可以在手动登录之前成功接收用户ID.
public function verifySingleSignOn($role, $route, $token)
{
// Fetch Single Signon
$userRepository = new UserRepository();
$user = $userRepository->checkForSingleSignOnToken($token, ['id']);
// Check if Token Exists
if (isset($user->id) && is_int($user->id) && $user->id != 0) {
// Manually Logging a user (Here is successfully recieve the user id)
$loggedInUser = Auth::loginUsingId($user->id);
if (!$loggedInUser) {
// If User …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个项目,我有多种用户类型,例如.superadmin,admin,managers等.一旦用户通过身份验证,系统将检查用户类型并将其发送到相应的控制器.中间件的工作正常.
因此,当经理访问http://example.com/dashboard时,他会看到管理员信息中心,而当管理员转到相同的链接时,他可以看到管理信息中心.
以下路线组可单独工作,但放在一起时只有最后一个工作.
/***** Routes.php ****/
// SuperAdmin Routes
Route::group(['middleware' => 'App\Http\Middleware\SuperAdminMiddleware'], function () {
Route::get('dashboard', 'SuperAdmin\dashboard@index'); // SuperAdmin Dashboard
Route::get('users', 'SuperAdmin\manageUsers@index'); // SuperAdmin Users
});
// Admin Routes
Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'], function () {
Route::get('dashboard', 'Admin\dashboard@index'); // Admin Dashboard
Route::get('users', 'Admin\manageUsers@index'); // Admin Users
});
Run Code Online (Sandbox Code Playgroud)
我知道我们可以重命名路线,如superadmin/dashboard和admin/dashboard,但我想知道是否有其他方法可以实现清洁路线.有没有人知道任何任何工作?
顺便说一下,我正在使用LARAVEL 5.1
任何帮助表示赞赏:)
如何以编程方式重新排序选项卡TabControl
?我需要根据某些条件对选项卡进行排序.
如果可以通过设计器进行重新排序,我想我们必须能够在运行时通过代码来完成.
我正在开发一个控制面板应用程序,我有几个用户角色,如globaladmin,编辑器等.现在我想将这些角色与单个UserController资源一起使用.
例如,globaladmins应该能够执行所有Restful方法,而编辑器只能查看和更新用户.
我知道委托带有开箱即用的中间件,这非常适合我需要的东西.但它只适用于路由(在这种情况下,我需要为每个角色分别使用控制器).
我的UserController看起来像这样.
Class UserController extends BaseController
{
$protected $viewfolder;
public function __construct
{
// Checking for role and then assigning the folder name of the views
$role = User::getRole();
switch($role)
case 'globaladmin':
$this->viewfolder = 'globaladmin';
break;
case 'editor':
$this->viewfolder = 'editor';
break;
default:
abort(401, 'Access Denied');
break;
}
public function index(){
if( Entrust::can('view-all-users') ){
$users = User:all();
}
return view( $this->viewfolder.'.users.viewuser', compact('users'));
}
public function create()
public function update()
public function delete()
}
Run Code Online (Sandbox Code Playgroud)
我需要在构造函数中使用中间件来检查用户角色,然后仅在角色有权使用它时才允许使用该方法.但是这应该以一种体面的方式完成,没有任何黑客攻击,因为我也将在其他控制器上使用它.
我有一个 S3 存储桶,里面有一个文件。我只希望某个域能够访问该文件。我在存储桶上尝试了一些策略,但都不起作用,这个来自AWS 文档。
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests originated from www.example.com and example.com",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-name/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.phpfiddle.org/*",
"http://phpfiddle.org/*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
为了测试该文件,我在 phpfiddle.org 上托管了一个代码并拥有此代码。但是我既不能通过直接从浏览器访问,也不能通过 phpfiddle 代码访问该文件。
<?php
$myfile = file_get_contents("https://s3-us-west-2.amazonaws.com/my-bucket-name/some-file.txt");
echo $myfile;
?>
Run Code Online (Sandbox Code Playgroud)
这里是文件的权限,bucket本身也有同样的权限+上面的策略。
这只是一个示例链接,而不是实际工作的链接。
我有一个名为'AdminMiddleware'的中间件,它正在类的构造函数中使用.由于某些原因,虽然正在运行构造函数,但是没有从构造函数中调用中间件.我尝试在adminMiddleware文件上进行模具转储,但似乎只是忽略了这个文件.
namespace App\Http\Controllers\SuperAdmin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class dashboard extends Controller
{
protected $user;
public function __construct()
{
$this->middleware('admin');
$this->user = Auth::User();
}
//Kernel.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
Run Code Online (Sandbox Code Playgroud)
对于某些项目要求,我无法直接在路线上使用中间件.任何帮助表示赞赏,我正在使用laravel 5.1.
假设我有一个名为“制造商”的模型,这个模型与另一个模型“车辆”有一对多的关系。现在,如果有任何与此型号相关的车辆,我不想让用户删除制造商。
//In Manufacturer model
public function vehicles()
{
return $this->hasMany('Vehicle');
}
Run Code Online (Sandbox Code Playgroud)
在存储库/控制器中,我有另一种方法来检查它。
public function checkAssociatedVehicles($id)
{
return Manufacturer::with('vehicles')->find($id)->toJson();
}
Run Code Online (Sandbox Code Playgroud)
这确实输出了所有相关车辆的制造商数据。但这效率不高,所以我只想检查一下是否有一辆汽车,然后不要删除制造商。
我有一个具有这种效果的设计
我不关心字体样式或任何细节,我现在关注的是创建框架,如果可能的话,按钮也是如此.有谁知道如何在CSS中做这种效果?
这是我非常基本的html/css代码,甚至没有任何帮助.如果它更适合你,你可以完全修改它.顺便说一句,我正在使用bootstrap 3.
/******** The html *********/
<div class="col-md-12 bg-img">
<div>Italy has never been so close</div>
</div>
/******** The css *********/
.bg-img {
display: table;
width: 100%;
height: 100px;
text-align: center;
background: #999 url("http://p1.pichost.me/i/15/1380265.jpg") no-repeat fixed center;
}
.bg-img div {
display: table-cell;
vertical-align: middle;
width:10px;
font-weight:700;
}
Run Code Online (Sandbox Code Playgroud)
我使用的是通用图像,因为它不应该有任何区别.这是小提琴. https://jsfiddle.net/3aL4xnr8/
我有 2 个模型,车辆和制造商。制造商与车辆有一对多的关系。我在两个模型上都启用了软删除。我有一个所有车辆的 html 表,它显示了 html 表中的标题、slug、manufacturer_id 和 deleted_at(laravel 默认)字段。
现在,当我从其页面软删除车辆时,一切正常,并显示所有车辆 + 软删除的车辆。同样,如果我删除该车辆的制造商,我仍然会看到所有制造商+软删除的制造商。现在当我回到车辆页面时出现问题,我收到一条错误消息
Trying to get property of non-object
Run Code Online (Sandbox Code Playgroud)
这意味着它正在寻找不再存在的制造商 ID。这是我获得所有车辆的雄辩查询
// Vehicle Controller
/* This query basically gets all fields in the first column from vehicle model
and all the fields in the second column from manufacturer model*/
$this->vehicle->getAllWithTrash(
['id', 'title', 'description', 'is_active', 'manufacturer_id', 'created_at', 'updated_at', 'deleted_at'],
['title', 'id']
) );
// Eloquent Repository
public function getAllWithTrash( $columns1 = array('*'), $columns2 = array('*') ){
return Vehicle::withTrashed()->with(['manufacturer' => function($q) use …
Run Code Online (Sandbox Code Playgroud) 我有一个用户上传 zip 文件的表单。我正在使用文件系统。
是否可以将文件上传到 S3,然后在那里解压缩文件?
或者
我应该先解压缩文件,然后将它们上传到 S3。
压缩后的文件夹中有很多文件(大约 500-600 个小文件),那么 Laravel 如何处理如此大量的文件?系统会在文件上传时停止运行还是在后台继续运行?像一个队列
我正在开发一个自定义主题,并在该主题中包含了 acf pro,如文档中所述。主题工作正常,主题激活时激活了 acf。这是代码。
// customize ACF path
add_filter('acf/settings/path', 'my_acf_settings_path');
function my_acf_settings_path( $path ) {
$path = get_stylesheet_directory() . '/inc/advanced-custom-fields-pro/';
return $path;
}
// customize ACF dir
add_filter('acf/settings/dir', 'my_acf_settings_dir');
function my_acf_settings_dir( $dir ) {
$dir = get_stylesheet_directory_uri() . '/inc/advanced-custom-fields-pro/';
return $dir;
}
// Include ACF
include_once( get_stylesheet_directory() . '/inc/advanced-custom-fields-pro/acf.php' );
Run Code Online (Sandbox Code Playgroud)
我现在面临几个小时的问题是由于我想在 acf 中实例化的组/字段。我有一些想要在全新安装时显示的字段组。以下是我尝试过的方法:
方法 1:
我已将字段作为 json 导出到名为acf-json
. ACF 确实识别它并显示为同步字段。但是当我尝试同步它时,它只会创建一个新的空字段。
方法 2: 我也尝试将字段组导出为 php 文件,然后将其包含在我的 functions.php 文件中,但 acf 无法识别此代码。
laravel-5 ×7
laravel ×6
php ×3
amazon-s3 ×2
eloquent ×2
acl ×1
c# ×1
css ×1
css3 ×1
html ×1
html5 ×1
json ×1
laravel-5.1 ×1
laravel-5.3 ×1
middleware ×1
svg ×1
tabcontrol ×1
tabpage ×1
unzip ×1
user-roles ×1
winforms ×1
wordpress ×1