# 用户安全策略

框架提供标准的用户安全策略接口

com.hand.hap.security.IUserSecurityStrategy

> 默认实现DefaultUserSecurityStrategy,order值为9999

编写自定义实现类,需要在 Spring 中定义为 bean (也可以通过 @Component之类的注解自动扫描注册)

可以实现下列方法,自定义安全策略:

### 登录成功以后,跳转至index页面前的策略

```java
ModelAndView loginVerifyStrategy(User user, HttpServletRequest request);

```


参数及返回类型说明

>  - user 通过登录验证的User对象
- ModelAndView 重定向到该 ModelAndView 
>
 如果想要正常跳转到index页面,请返回null

注意:会根据order大小依次执行实现类的该方法,注意顺序





### 用户修改密码时,自定义密码复杂度
 
```java

  void passwordVerifyStrategy(IRequest request ,User user,String oldPwd, String newPwd, String newPwdAgain) throws UserException;

```

参数及异常说明



> - user 通过登录验证的User对象
- oldPwd 旧密码
- newPwd 新密码
- newPwdAgain 再次输入的新密码
- 如果验证不通过,请抛出自定义的UserException

一般来说修改了复杂度验证策略,需要修改sys_config页面。

###  新建用户时的策略

 

```java

User beforeCreateUser(IRequest request ,User user)

```

可以对用户做统一的信息处理,如统一设置一些属性值,注意如果实现了该方法,一定要返回处理后的User对象,默认返回传入的user


> 实现IAuthenticationSuccessListener
 接口, 是在用户登录验证成功时执行.
>
一般用来往session里面放一些值,或其他逻辑,如果抛出异常,则会在login页面显示异常信息,注意区别。