diff --git a/src/main.rs b/src/main.rs
index bf9e546585553f76f1a12a762bb5a9100817625f..e369139a370fcd25ef65c360f4d928734fb098e5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -50,7 +50,10 @@ fn main() {
         let s = Sec::new(1);
         // s.level = 3;
         u1.user1(&s);
-        u2.user2(&s, &mut u1);
+        u2.user2(&s, &mut u1); // try without key set
+        u2.enter(&s, "abc"); //
+        u2.user2(&s, &mut u1); // try with key set
+        u2.user2(&s, &mut u1); // try with key set
     };
 }
 
@@ -108,16 +111,25 @@ mod u2 {
         key: &'static str,
     }
 
-
-
     impl State {
         pub const fn new() -> Self {
-            State { key: &*"---" }
+            State { key: "---" }
         }
+
         pub fn user2(&mut self, sec: &Sec, u1: &mut u1::State) {
             println!("user2, level = {}", sec.level());
-            let s = auth("abc");
+            let s = auth(self.key);
             println!("user2, data = {:?}", u1.get_data(sec, &s));
         }
+
+        pub fn enter(&mut self, sec: &Sec, k: &str) {
+            println!("enter, level = {}", sec.level());
+            self.key = "abc";
+        }
+
+        pub fn expire(&mut self, sec: &Sec) {
+            println!("enter, level = {}", sec.level());
+            self.key = "---";
+        }
     }
 }