小编Jos*_*osh的帖子

如何使Basic Auth排除重写的URL

我在开发服务器上有一个基本身份验证设置.它是在我的httpd.conf文件中为网站的VirtualHost设置的.我必须将它设置为排除某些目录,这些目录没有引起任何问题并且一切正常.

问题在于排除已通过文件中的mod_rewrite规则的URL .htaccess.我的设置是我有所有URL通过我的index.php文件,并从那里找到并运行相关的代码.我尝试添加我想要排除的URL(/businesses/upload_logo),就像我做其他人一样,但它仍然需要身份验证.这就是我目前拥有的:

...
<Location />
    SetEnvIf Request_URI "/businesses/upload_logo" noauth=1
    SetEnvIf Request_URI "/api/.*" noauth=1

    AuthType Basic
    AuthName "Private"
    AuthUserFile ****
    Require valid-user

    Order deny,allow
    Satisfy any
    Deny from all
    Allow from env=noauth
</Location>
....
Run Code Online (Sandbox Code Playgroud)

在这里这里找到了与我类似的问题,但答案只给了我正在尝试的东西.

我也想过其他可能的解决方案,但这些都是最后的选择.我想看看我现在的做法是否可行:

  • 在我的PHP代码中设置基本身份验证
    • 此刻太麻烦了
  • 将身份验证放在我的.htaccess文件中
    • 我还不想这样做,因为我只希望在3台服务器之一上进行身份验证.我知道我可以使用更多,SetEnvIf HOST ...但我想看看它是否可以这样修复或不首先修复.

mod_rewrite规则:

...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

apache authentication .htaccess mod-rewrite .htpasswd

12
推荐指数
1
解决办法
1万
查看次数

如何将sqljdbc_auth.dll添加到我的maven项目中

我正在尝试建立与数据库的连接.这是一个使用maven的简单项目.我有问题sqljdbc_auth.dll

我添加了mssql jdbc驱动程序并添加了依赖项 pom.xml

    <dependency>
    <groupId>com.microsoft</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>4.0.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这是我的尝试块

    try {
        // Establish the connection. 
        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setIntegratedSecurity(true);
        ds.setServerName("BUILDSRV");
        ds.setDatabaseName("master");
                    ds.setIntegratedSecurity(true);
        con = ds.getConnection();       
        }
Run Code Online (Sandbox Code Playgroud)

我有一个错误

    21.11.2012 18:07:04 com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
    WARNING: Failed to load the sqljdbc_auth.dll cause :- no sqljdbc_auth in       java.library.path
    com.microsoft.sqlserver.jdbc.SQLServerException:
Run Code Online (Sandbox Code Playgroud)

我有我的sqljdbc_auth.dll但我不需要把它放到我的C:\windows\... 我需要在maven的项目中添加它.我怎样才能做到这一点?

我试图将它添加到它pom.xml但它不起作用

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
              <execution>
                  <id>attach-artifacts</id>
                  <goals>
                      <goal>attach-artifact</goal>
                  </goals>
                  <configuration>
                      <artifacts>
                          <file>target</file>
                          <type>dll</type>
                      </artifacts>
                  </configuration>
              </execution>
    </executions>
    </plugin>
    </plugins>
Run Code Online (Sandbox Code Playgroud)

我在建造时遇到了另一个错误

Failed to execute …
Run Code Online (Sandbox Code Playgroud)

java sql-server netbeans jdbc maven

9
推荐指数
1
解决办法
7766
查看次数

在CakePHP中进行单元测试期间使用不同的电子邮件配置

我正在我的一个控制器的动作中使用CakeEmail类发送电子邮件.在添加电子邮件代码之前,我对此控制器进行了单元测试.添加电子邮件后,我收到此错误:

SocketException:无法发送电子邮件.

这可以归结为我无法通过本地机器发送电子邮件.

所以我认为也许一个好主意是在Config/email.php中的EmailConfig类中有两个不同的配置选项(类似于数据库配置文件的工作方式).默认使用Mail传输,使用Debug传输进行测试.这个问题是,与数据库配置不同,Cake在测试期间不会在两者之间自动切换.

我唯一想到的是在EmailConfig类中添加一个构造函数并测试我们是否进行单元测试,但我不确定该检查应该是什么.

有点像这样:

class EmailConfig {

    public $default = array(
        'transport' => 'Mail'
    );

    public $test = array(
        'transport' => 'Debug'
    );

    public function __construct() {
        if ($isUnitTesting) {
            $this->default = $this->test;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我上面的建议是不是一个好主意?如果没有,在单元测试期间,我还可以使用其他方式为电子邮件使用不同的传输方式?


更新 - 2012年4月10日

我想我的做法是错误的.看看这个答案,似乎即使$default默认情况下没有加载配置,你必须通过调用CakeEmail::config()方法指定它或在构造函数中给它.所以我认为这给我留下了两个选择:

  1. 在控制器中检查我们是否进行单元测试(以某种方式?)然后使用'test'配置.
  2. 设置我的电脑以便能够发送电子邮件.

我宁愿做第一个,但不确定如果我们进行单元测试,如果不对控制器动作进行检查,这怎么办呢,这样做似乎是错误的.

phpunit unit-testing cakephp

5
推荐指数
1
解决办法
1756
查看次数

使用按钮添加总计自定义折扣顺序

我的模块有我的自定义折扣,没关系.

config.xml文件:

<sales>
   <quote>
       <totals>
             <aver> 
                <class>Dani_Prueba_Model_Total_Aver</class> 
                <after>subtotal</after> 
             </aver>
        </totals>
    </quote>
</sales>
Run Code Online (Sandbox Code Playgroud)

我的模块:

<?php
class Dani_Prueba_Model_Total_Aver extends Mage_Sales_Model_Quote_Address_Total_Abstract{

    public function collect(Mage_Sales_Model_Quote_Address $address){

        $baseDiscount = 2.5;
        $discount = Mage::app()->getStore()->convertPrice($baseDiscount);

        $address->setCustomDiscount($baseDiscount);

        $address->setBaseGrandTotal($address->getBaseGrandTotal() - $baseDiscount);
        $address->setGrandTotal($address->getGrandTotal() - $discount);

        return $this;
    }

    public function fetch(Mage_Sales_Model_Quote_Address $address){
        $this->setCode('aver');
        $amount = $address->getCustomDiscount();
            if ($amount != 0){
                $address->addTotal(array(
                'code'  => $this->getCode(),
                'title' => 'Custom Discount',
                'value' => $amount
            ));
        }
        return $this;
    }
}
Run Code Online (Sandbox Code Playgroud)

这没关系,当我将产品添加到购物车时,会自动应用我的自定义折扣.

但现在我需要用一个按钮来做.当我向购物车添加产品时,不应用折扣并拥有正确的总数.但是当我点击一个按钮,应用我的自定义折扣,并使用其他按钮"取消",取消折扣.我需要一些类似功能的优惠券代码.

我怎么做的?

magento magento-1.7

3
推荐指数
1
解决办法
5619
查看次数

Auth中"login"和"attempt"方法的区别是什么?

我正在学习Laravel 5.4并定制和制作我原来的Auth功能.

以下是我的"身份验证"方法.

public function authenticate(Request $request)
{
    $remember_me = (Input::has('remember')) ? true : false;
    Auth::guard('web');
    $this->validateLogin($request);
    $credentials = array(
        'username' => trim($request->input('username')),
        'password' => trim($request->input('password'))
    );
    if(Auth::attempt($credentials, $remember_me)){
        $user = Auth::guard('web')->user();
        Auth::guard('web')->login($user, $remember_me);
        return redirect()->route('mypage');
    }
    return redirect()->back();
}
Run Code Online (Sandbox Code Playgroud)

关于上面提到的尝试和登录方法的$ remember_me参数部分,我有一个问题.

他们之间有什么区别?

当我看到文档时,它说类似于,如果你想制作"记住我"的标记,你可以设置关于它们的第二个布尔参数.

authentication login laravel laravel-5.4

3
推荐指数
1
解决办法
1619
查看次数

"Gtk-WARNING**:无法打开显示:"在Eclipse中运行gtkmm项目时

我正在尝试在Eclipse CDT(On Ubuntu)中运行gtkmm项目.项目编译正常,没有报告错误但是当我尝试运行项目时,控制台会打印出此消息

"Gtk-WARNING **: cannot open display:"
Run Code Online (Sandbox Code Playgroud)

如果我去可执行文件所在的位置,在nautilus中,我可以打开它并运行正常.尝试直接从Eclipse运行时,这只是一个问题.

谢谢,

eclipse ubuntu eclipse-cdt gtkmm

2
推荐指数
1
解决办法
9689
查看次数

CakeEmail,调试级别为0

我正在尝试通过CakeEmail发送电子邮件,它在调试级别为2时都能正常工作但是只要我将其切换到调试级别0它就会停止工作并且在访问页面时出现服务器错误.我检查了日志,这就是我得到的:

PHP Fatal error: Call to a member function subject() on a non-object

这是我正在使用的代码:

$email = new CakeEmail();
$email->template('forgot_password', 'default')
    ->emailFormat('html')
    ->viewVars(array('password' => $password))
    ->from(array('my@email.com' => 'My Company'))
    ->to('my@email.com')
    ->subject('Your new password')
    ->send();
Run Code Online (Sandbox Code Playgroud)

我之前使用过类似的代码,但是不记得我是否尝试过调试级别为0的代码.

谢谢,

cakephp cakephp-2.0

0
推荐指数
1
解决办法
717
查看次数