spring+springMVC+mybatis+shiro單次登錄

說明

大佬的腳手架地址奉上:https://gitee.com/duxiaod/irs。此腳手架大佬已不在更新刁俭,此修改僅為個人愛好。

ShiroUtil.java修改

添加了下面的代碼



// 遍歷同一個賬戶的session

public static List<Session> getLoginedSession(Subject currentUser) {

Collection<Session> list = ((DefaultSessionManager) ((DefaultSecurityManager) SecurityUtils

.getSecurityManager()).getSessionManager()).getSessionDAO().getActiveSessions();

List<Session> loginedList = new ArrayList<Session>();

TbAdmin loginUser = (TbAdmin) currentUser.getPrincipal();

for (Session session : list) {

Subject s = new Subject.Builder().session(session).buildSubject();

if (s.isAuthenticated()) {

TbAdmin user = (TbAdmin) s.getPrincipal();

if (user.getUsername().equalsIgnoreCase(loginUser.getUsername())) {

if (!session.getId().equals(currentUser.getSession().getId())) {

loginedList.add(session);

}

}

}

}

return loginedList;

}



AdminController.java修改

添加了

“?// 剔除其他此賬號在其它地方登錄,實現(xiàn)一個賬戶不能同時在多個地方登錄

List<Session> loginedList = ShiroUtils.getLoginedSession(subject);

for (Session session : loginedList) {

session.stop();

}

這一段代碼韧涨,完整代碼如下:



@RequestMapping("/login")

@ResponseBody

public ResultUtil login(HttpServletRequest req, String username, String password/*, String vcode*/) {

if(/*StringUtils.isEmpty(vcode)||*/StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){

throw new RRException("參數(shù)不能為空");

}

/*String kaptcha = ShiroUtils.getKaptcha("kaptcha").toLowerCase();

if(!vcode.toLowerCase().equals(kaptcha)){

return ResultUtil.error("驗證碼不正確");

}*/

try{

Subject subject = ShiroUtils.getSubject();

//md5加密

//password=DigestUtils.md5DigestAsHex(password.getBytes());

UsernamePasswordToken token = new UsernamePasswordToken(username, password);

subject.login(token);

// 剔除其他此賬號在其它地方登錄,實現(xiàn)一個賬戶不能同時在多個地方登錄

? ? ? ? ? ? ? ? ? ? ? ? List<Session> loginedList = ShiroUtils.getLoginedSession(subject);

? ? ? ? ? ? ? ? ? ? ? ? for (Session session : loginedList) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? session.stop();

? ? ? ? ? ? ? ? ? ? ? ? }

}catch (UnknownAccountException e) {

return ResultUtil.error(e.getMessage());

}catch (IncorrectCredentialsException e) {

return ResultUtil.error(e.getMessage());

}catch (LockedAccountException e) {

return ResultUtil.error(e.getMessage());

}catch (AuthenticationException e) {

return ResultUtil.error("賬戶驗證失敗");

}

return ResultUtil.ok();

/*String vCode = req.getSession().getAttribute("vcode").toString().toLowerCase();

if (vcode.toLowerCase().equals(vCode)) {

TbAdmin admin = adminServiceImpl.login(username, password);

if (admin != null) {

// 登陸成功

// 將密碼置空

admin.setPassword("");

// 設(shè)置用戶信息到Session作用域

req.getSession().setAttribute("admin", admin);

return new ResultUtil(0);

}

return new ResultUtil(502, "用戶名或密碼錯誤牍戚!");

}

return new ResultUtil(501, "驗證碼錯誤侮繁!");*/

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市如孝,隨后出現(xiàn)的幾起案子宪哩,更是在濱河造成了極大的恐慌,老刑警劉巖第晰,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锁孟,死亡現(xiàn)場離奇詭異,居然都是意外死亡茁瘦,警方通過查閱死者的電腦和手機品抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甜熔,“玉大人圆恤,你說我怎么就攤上這事∏幌。” “怎么了盆昙?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烧颖。 經(jīng)常有香客問我弱左,道長,這世上最難降的妖魔是什么炕淮? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任拆火,我火速辦了婚禮,結(jié)果婚禮上涂圆,老公的妹妹穿的比我還像新娘们镜。我一直安慰自己,他們只是感情好润歉,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布模狭。 她就那樣靜靜地躺著,像睡著了一般踩衩。 火紅的嫁衣襯著肌膚如雪嚼鹉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天驱富,我揣著相機與錄音锚赤,去河邊找鬼。 笑死褐鸥,一個胖子當(dāng)著我的面吹牛线脚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浑侥,長吁一口氣:“原來是場噩夢啊……” “哼姊舵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寓落,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤括丁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后零如,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躏将,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年考蕾,在試婚紗的時候發(fā)現(xiàn)自己被綠了祸憋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡肖卧,死狀恐怖蚯窥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塞帐,我是刑警寧澤拦赠,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站葵姥,受9級特大地震影響荷鼠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榔幸,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一允乐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧削咆,春花似錦牍疏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞻惋,卻和暖如春厦滤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歼狼。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工馁害, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹂匹。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像凹蜈,于是被迫代替她去往敵國和親限寞。 傳聞我的和親對象是個殘疾皇子忍啸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容