```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-web-sdl</artifactId>
</dependency>
```

#### 1、描述

校验扩展插件，本质是 “[solon-security-validation](/article/225)” LoginedChecker 接口的能力适配。为 Solon Web 提供简单的 “单设备登录 ”支持（是否使用令牌无所谓）。v2.2.11 后支持 

#### 2、代码应用


* 配置与构建

```yaml
demo.redis:
  server: "localhost:6379"
```

```java
@Configuration
public class SdlConfig {
    @Bean
    public SdlStorage sdlService(@Inject("${demo.redis}") RedisClient redisClient) {
        //确定 Sdl 的标识存储器 //临时测试也可以用 SdlStorageOfLocal //也可以自己实现个
        return new SdlStorageOfRedis(redisClient);
    }

    @Bean
    public LoginedChecker sdlLoginedChecker() {
        //确定登录注解的检测器
        return new SdlLoginedChecker();
    }
}
```

* 代码应用：登录示意代码

```java
@Controller
public class LoginController {
    @Mapping("/login")
    public void login(String username, String password){
        if (username == "test" && password == "1234") {
            //获取登录的用户id
            long userId = 1001;
            //登录
            SdlUtil.login(userId);
        }
    }
    
    @Mapping("logout")
    public void logout() {
        //退出
        SdlUtil.logout();
    }
}
```

* 代码应用：SDL 校验示意代码

```java
@Logined //可以使用验证注解了，并且是基于 sdl 进行校验的
@Controller
public class AdminController extends BaseController{
    @Mapping("test")
    public String test(){
        return "OK";
    }
}
```

#### 3、了解手动控制接口

因为定位简单的，所以只提供三个接口

| 接口 | 说明 | 
| -------- | -------- | 
| SdlUtil.login(userId)     | 登录     | 
| SdlUtil.logout()     | 退出当前用户     | 
| SdlUtil.isLogined()     | 判断是否已登录     | 




#### 具体可参考

[https://gitee.com/noear/solon-examples/tree/main/3.Solon-Web/demo3025-sdl](https://gitee.com/noear/solon-examples/tree/main/3.Solon-Web/demo3025-sdl)