1

Struts、Spring、Hibernateを使用して構築されたアプリケーションがあります。このアプリケーションでは、RESTサービスを構築したいと思います。このRESTサービスはAndroidアプリケーションで使用されます。このアプリケーションでは、ユーザーとロールがデータベースに保存されていました。ユーザーテーブルのユーザー名とパスワード、およびロールテーブルのロール。私が聞きたいのは、RESTサービスにアクセスしたいクライアントを認証する方法です。したがって、RESTサービスでリソースにアクセスするには、クライアントが最初にログインする必要があります。ユーザーがログインしていない場合、残りは常に文字列「not_authenticated」を返します。通常、Webアプリケーションでは、これはセッションを使用します。残りの部分も同じですか?

現在のコードを追加し、質問を更新するために編集しました

@POST
@Path("/login")
@Produces(MediaType.APPLICATION_JSON)
public Response login(@FormParam("username") String username,
        @FormParam("password") String password){
    MessageDto messageDto = customerService.autenticate(username, password);
    if(messageDto.getResult().equals("success")){
        return Response.ok(messageDto)
            .cookie(new NewCookie("customerId", messageDto.getMessage()))
            .build();
    }else{
        return Response.ok(messageDto)
                       .build();
    }
}

MessageDtoは、2つの変数StringresultとStringmessageを持つオブジェクトです。たとえば、クライアントがログインに成功した場合、jsonの戻り値は次のようになります。

{"result":"success","message":"1-admin"}

クライアントがログインに成功しなかった場合

{"result":"error","message":"Your username is not registered"}
4

1 に答える 1

3

ログインに成功したときに、 HTTPONLYプロパティでJersey Response Objectを使用してユーザーCookie(userId、tokenなど)を設定します。

コントローラで@CookieParamを使用してそのCookieを取得し、一致が見つからない場合は最初にデータベースレコードで確認してから、ログインページにリダイレクトします。それ以外の場合は先に進みます。

于 2012-11-27T06:50:04.020 に答える