0

YiiフレームワークのPHPサーバーにいくつかのデータをPOSTしています。ログインは正常に機能します。これは、私のデータが適切にサーバーに送信されることを意味します。

accessRulesしかし、ログイン後、私の後続のリクエストはサーバー上のメソッドによって拒否され、それに応じてログインページが表示されます。

これは、PHPのaccessRules関数です。egineeringが管理者以外の通常のユーザーである場合。

public function accessRules()
    {
        return array(

            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view','AssignedUsers',),
                'roles'=>array('admin', 'engineering'),
                //'users'=>array('*'),
            ),
            array('allow', // allow authenticated user to perform 'create' and 'update' actions
                'actions'=>array('create','update','userReport','userNewReport',),
                'roles'=>array('admin'),
                //'users'=>array('@'),
            ),
            array('allow', // allow admin user to perform 'admin' action
                'actions'=>array('admin'),
                'roles'=>array('admin', 'engineering'),
            ),
            array('allow', // allow admin user to perform 'delete' action
                'actions'=>array('delete'),
                'roles'=>array('admin', 'admin'),
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

しかし、私はサーバーによって拒否されます。

これはJAVAリクエストです

String content ="user=" + URLEncoder.encode(userId,encoding) +
"&apiKey=" + URLEncoder.encode(apiKey,encoding);  

このコンテンツは、次のURLで使用されます。

        connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setUseCaches (false);
        connection.setRequestProperty("Content-length",String.valueOf (content.length())); 
        connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

        DataOutputStream printout = new DataOutputStream (connection.getOutputStream ());

        System.out.println(url+",Content = "+content);

        printout.writeBytes (content);
        printout.flush ();
        printout.close ();
4

1 に答える 1

2

クッキーを送信します。

ログインすると... サーバーにセッションが作成され、セッション IDが HTTP 応答ヘッダーの Cookie として送信されます。

ログイン応答からこれらの Cookie をキャッチし、後続の要求で同じものを送信し続ける必要があります。

私はちょうどグーグルでこの例を見つけました: 応答からクッキーを取得する方法とリクエストでそれを送信する方法

于 2012-09-28T05:43:48.010 に答える