2017-08-09 2 views
0

私はJava Webプログラミングの新機能で、ユーザーを認証し、トークンをCookieに格納し、次のページに渡すためのメソッドを作成しようとしています。私は、認証の戻り値の型が何であるべきかについて懸念しています。返り値authenticateUser()として直接Cookieオブジェクトを返しますか?クッキーの返品の種類は何ですか?

@POST 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public Response authenticateUser(@FormParam("username") String username, 
           @FormParam("password") String password) { 

    try { 

     // Authenticate the user using the credentials provided 
     authenticate(username, password); 

     // Issue a token for the user 
     _logger.log(Level.INFO, "----ABOUT TO LOG TOKEN TO WILDFLY"); 
     String token = issueToken(username,"http://example.com","userToken",msInHour); //returns JWT token 
     _logger.log(Level.INFO, "----LOGGING TOKEN TO WILDFLY: ",token); 
     // Return the token on the response 
     //return Response.ok(token).build(); 
     Response.createCookie(createCookie(token,username)).build(); 

    } catch (Exception e) { 
     _logger.log(Level.INFO, "----ERROR in AuthService:",e); 
     return Response.status(Response.Status.FORBIDDEN).build(); 
    }  
} 

private Cookie createCookie(String token,String uname){ 
    //https://stackoverflow.com/questions/8889679/how-to-create-a-cookie-and-add-to-http-response-from-inside-my-service-layer 
    final Boolean useSecureCookie = true; 
    final int expiryTime = 60 * 60 * 24; // 24h in seconds 
    final String cookiePath = "/"; 

    Cookie cookie = new Cookie("example.com", uname+"_"+token); 
    cookie.setSecure(useSecureCookie); // determines whether the cookie should only be sent using a secure protocol, such as HTTPS or SSL 
    cookie.setMaxAge(expiryTime); // A negative value means that the cookie is not stored persistently and will be deleted when the Web browser exits. A zero value causes the cookie to be deleted. 
    cookie.setHttpOnly(true); 
    cookie.setPath(cookiePath); // The cookie is visible to all the pages in the directory you specify, and all the pages in that directory's subdirectories 
    return cookie; 
} 
+0

クッキーの返品タイプは何を意味していますか?つまり、「データベースの戻り型は何ですか?」というようなものです。クッキーは単にクライアント側の記憶メカニズムです。 – EJoshuaS

答えて

0

あなたはクッキーの動作を設定する方法を確認するために彼らのドキュメントを見てする必要がありますので、あなたのバックエンドのフレームワークとしてジャージーを使用しているように見えます。 JSONを "制作"しているので、ブラウザはそれを理解できないため、普通のクッキーを返すことはできません。

How to set cookie in Jersey

Responseオブジェクトには、別の方法でCookieを設定する必要があります(cookie())。

関連する問題