我的问题与this question
非常相似我正在尝试将JAX-RS框架与Jersey和JSF一起使用。 我知道我可以在同一个应用程序上同时运行它们,但映射到不同的位置(我现在有)
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Rest Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
我想要做的是类似于this,其中用户可以访问REST API,但只返回允许他们根据角色查看的数据。例如,如果他们是老师,他们可以前往foo.com/api/students
,只会得到一个json回复,其中包含在课堂上的学生,而不是学校里的所有学生。
我的问题是用户使用foo.com/login.xhtml
下的/*.xhtml
进行登录,因此他们的角色由JSF会话管理。我认为这意味着/api/students
处的REST API无法知道用户登录的对象,尝试访问的用户,以及应该显示的结果。它甚至无法重定向未登录到登录页面的用户,如果他们只是将网址foo.com/api/students
放入他们的网络浏览器,它只能显示所有学生。
我希望我错误地想到这一点,并且有一种方法可以知道谁登录,保护我的/api/students
REST API来自未登录的人,甚至可以返回正确的数据关于他们的用户角色,如果他们已登录。
请帮助我理解我想做的事情是否可行。谢谢。