我的网络应用程序需要在用户访问应用程序URL时自动登录:
示例:
http://myapp/home.xhtml?token={3bcdc006-05fc-4ce1-953a-17375edcf2a2}
on my pages.xml i have the following:
<pages xmlns="http://jboss.com/products/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd"
no-conversation-view-id="/home.xhtml"
login-view-id="/login.xhtml">
当没有对话激活时,默认为home.xhtml 当用户使用令牌参数到达home.xhtml时,我希望调用一个操作并登录用户。
任何教程或示例?
如果没有调用参数,我希望引发一个org.jboss.seam.security.AuthorizationException,以便用户被重定向到error.xhtml
提前致谢
答案 0 :(得分:3)
在Seam Documentation中阅读页面参数。
在您的pages.xml中,您可以指定类似的内容:
<pages>
<page view-id="/home.xhtml" action="#{backingBean.checkToken}">
<param name="token" value="#{backingBean.token}"/>
</page>
</pages>
这将使用URL中的值填充变量token
并调用checkToken()
方法。在checkToken()
方法中,您可以检查用户是否已登录,如果没有,则检查是否已填充token
,如果没有,则抛出AuthorizationException
答案 1 :(得分:0)
这类似于问题
get-request-and-session-parameters-and-attributes-from-jsf-pages
一些谷歌搜索显示您可以使用faces上下文和内置地图访问请求参数,param,它有您的请求参数。所以,我建议你有一个在home.xhtml上加载的请求bean,它检查facesContext并引发一个org.jboss.seam.security.AuthorizationException以让JBOSS处理登录。
FacesContext ctx = FacesContext.getCurrentInstance();
String requestToken = ctx.getApplication().createValueBinding("#{param.token}").getValue(ctx);