For a long time we were developing web applications with ASP.NET and JSF. At present we prefer rich clients and a server with page templates and RESTful web services.
This transition brings technical questions. Consider this one.
Browsers allow to store session state entirely on the client, so should we maintain a session on the server?
Since the server is just a set of web services, so we may supply all required arguments on each call.
At first glance we can assume that no session is required on the server. However, looking further we see that we should deal with data validation (security) on the server.
Think about a classic ASP.NET application, where a user can select a value from a dropdown. Either ASP.NET itself or your program (against a list from a session) verifies that the value received is valid for the user. That list of values and might be other parameters constitute a user profile, which we stored in session. The user profile played important role (often indirectly) in the validation of input data.
When the server is just a set of web services then we have to validate all parameters manually. There are two sources that we can rely to: (a) a session, (b) a user principal.
The case (a) is very similar to classic ASP.NET application except that with EnableEventValidation="true" runtime did it for us most of the time. The case (b) requires reconstruction of the user profile for a user principal and then we proceed with validation of parameters.
We may cache user profile in session, in which case we reduce (b) to (a); on the other hand we may cache user profile in Cache, which is also similar to (a) but which might be lighter than (at least not heavier than) the solution with the session.
What we see is that the client session does not free us from server session (or its alternative).
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u