seam3 登陆验证(Seam3 Booking example)
1.在pom.xml添加依赖
<dependency>
<groupId>org.jboss.seam.security</groupId>
<artifactId>seam-security</artifactId>
<version>3.0.0.Final</version>
</dependency>
2.页面home.xhtml
<h:form id="login" rendered="#{not identity.loggedIn}">
<fieldset>
<div>
<h:outputLabel for="username" value="#{bundles.messages.home_usernameLabel}"/>
[color=red]<[/color]
<div class="errors"><h:message for="username"/></div>
</div>
<div>
<h:outputLabel for="password" value="#{bundles.messages.home_passwordLabel}"/>
[color=red]<h:inputSecret id="password" value="#{credentials.password}" style="width: 175px;"/>[/color]
</div>
<span class="errors">
<h:messages errorClass="error" styleClass="messages" id="messages" globalOnly="true"/>
</span>
<div class="buttonBox">[color=red]<h:commandButton id="login" action="#{identity.login}" value="#{bundles.messages.home_loginAction}"/>[/color]</div>
<div class="notes"><h:link id="register" outcome="/register.xhtml" value="#{bundles.messages.home_registerAction}"/></div>
<div class="subnotes">
#{bundles.messages.home_useDemoAccount}
<ul>
<li>shane/brisbane</li>
<li>dan/laurel</li>
<li>lincoln/charlotte</li>
<li>jose/brazil</li>
</ul>
</div>
</fieldset>
</h:form>
3.配置 验证方法(classpath下的resources文件夹seam-beans.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ee="urn:java:ee"
xmlns:ss="urn:java:org.jboss.seam.security"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://docs.jboss.org/cdi/beans_1_0.xsd">
<ss:IdentityImpl>
<ee:modifies />
<ss:authenticatorName>bookingAuthenticator</ss:authenticatorName>
</ss:IdentityImpl>
</beans>
4.实现验证的BookingAuthenticator类,实现先Authenticator接口,重写authenticate()
@Stateless
@Named("bookingAuthenticator")
public class BookingAuthenticator extends BaseAuthenticator implements Authenticator {
@Inject
private Logger log;
@PersistenceContext
private EntityManager em;
@Inject
private Credentials credentials;
@Inject
private Messages messages;
@Inject
@Authenticated
private Event<User> loginEventSrc;
public void authenticate() {
log.info("Logging in " + credentials.getUsername());
if ((credentials.getUsername() == null) || (credentials.getCredential() == null)) {
messages.error(new DefaultBundleKey("identity_loginFailed")).defaults("Invalid username or password");
setStatus(AuthenticationStatus.FAILURE);
}
User user = em.find(User.class, credentials.getUsername());
if (user != null && credentials.getCredential() instanceof PasswordCredential){
if(user.getPassword().equals(((PasswordCredential) credentials.getCredential()).getValue())) {
loginEventSrc.fire(user);
messages.info(new DefaultBundleKey("identity_loggedIn"), user.getName()).defaults("You're signed in as {0}")
.params(user.getName());
setStatus(AuthenticationStatus.SUCCESS);
setUser(new SimpleUser(user.getUsername())); //TODO confirm the need for this set method
return;
}
}
messages.error(new DefaultBundleKey("identity_loginFailed")).defaults("Invalid username or password");
setStatus(AuthenticationStatus.FAILURE);
}
}
分享到:
相关推荐
在本篇讨论中,我们将深入探讨如何在Seam框架下进行基于数据库的权限验证,以此来确保用户只有在具备相应权限的情况下才能访问特定的资源。 首先,我们要理解Seam中的安全模型。Seam使用了JSF(JavaServer Faces)...
3. 身份管理与OpenID:Seam Security还提供身份管理支持,包括对OpenID的支持,这是一种流行的单点登录(SSO)解决方案。 4. 授权与权限管理:授权是确定谁可以访问特定资源的过程。Seam Security提供了一套权限...
3. **权限验证**:Seam 包含一个广泛适用的权限验证框架,支持基于角色的访问控制(RBAC)、持久化权限设置以及规则驱动的权限决策。这使得开发者可以根据业务逻辑创建自定义的安全策略。 4. **权限管理**:Seam ...
通过Seam-gen可以方便地创建包含业务逻辑的表单组件,这些表单可以直接绑定到Seam组件上,实现数据的收集和验证等功能。 **2.5 从现有数据库生成应用程序** Seam-gen还支持从现有的数据库模式自动生成Seam应用的...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
Seam提供了安全的身份验证和授权服务,可以与JSF组件配合使用,创建用户友好的表单和处理登录逻辑。Seam的Security模块允许开发者轻松管理用户角色和权限,确保只有授权用户能访问特定资源。 2. **猜数字游戏(jbpm...
- 后端通过一系列的组件协作完成验证、存储等操作,并返回相应的页面展示结果。 ##### 1.3 Seam中的可点击列表:消息示例 - **实体Bean** (`Message.java`): 存储消息内容的数据实体。 - **有状态的会话Bean** (`...
- **转换和验证**:利用JSF的内置转换器和验证器,以及Seam提供的扩展功能。 - **视图管理**:通过Seam的视图管理机制,实现灵活的导航逻辑。 ### 5. 组件模型 Seam的组件模型是其核心之一,它提供了一种灵活的...
3. **核心组件**:深入探讨了JBoss Seam的关键组件,如Conversation Scope、Event System、Component Model等,并解释了它们如何协同工作以实现复杂的业务逻辑。 4. **Web 2.0应用开发**:讲解了如何利用JBoss ...
JBossWebCustomSingleSignOnValve 一个 JBossWeb 阀,它扩展了 SingleSignOn 阀并启用了具有非自定义身份验证的 Seam 等 Web 应用程序,以将 SSO 所需的主体对象存储在运行在同一实例/主机上的其他 Web 应用程序中。...
17.4 验证用户输入 17.4.1 Hibernate Validator简介 17.4.2 创建注册页面 17.4.3 用Seam实现国际化 17.5 利用Seam简化持久化 17.5.1 实现对话 17.5.2 让Seam管理持久化上下文 17.6 小...
- **Seam框架**: - 一个企业级应用框架,简化了业务逻辑的编写。 - 支持会话管理和状态管理等特性。 #### 3. 系统分析 - **需求分析**: - 定义不同的用户角色,例如普通用户、管理员等。 - 功能需求包括:...
- Single Sign-On (SSO):通过Yale CAS和Siteminder等提供单点登录功能。 - Hierarchical and Extensible系统:支持社区和组织的层次结构和扩展。 - Mule or ServiceMix ESB:支持企业服务总线集成。 #### 八、性能...
SSH框架的演示示例通常会包含一个类似电子商务网站后台的产品分类功能,涉及登录验证(Login.jsp、Login_success.jsp、Login_error.jsp)、Servlet与Struts的比较以及MVC实现。在这个过程中,用户通过浏览器发起HTTP...