最近写东西一直没有加Authorware,也一直知道这个功能很重要,但是一直没有下定决心去看这一块,其实是有原因的:1 一开始粗略的看了一下,似是而非,于是感觉这个东东很难,很晦涩 2 由于之前看Laravel遗留的这一部分没看,感觉很难 。哈哈总之一句话:下意识的感觉这部分很难,所以它难…… 下意识中感觉他很难,但是理智还是要上的--理智告诉我这部分要去实践,去克服……
分类 web基于session 2 基于API的无状态
1 web基于session 我们分离出一个web.swfit文件来实现,此处的web登陆认证 第一步就是让用户Model尊徐SessionAuthenticatable协议
extension SKUser: SessionAuthenticatable{}
第二部 通过SKUser模型创建一个Session中间件Middleware AuthenticationSessionsMiddleware
,然后将中间件加入到router分组中即可实现基于SKUser模型的认证
let session = SKUser.authSessionsMiddleware() let auth = router.grouped("web") .grouped(SessionsMiddleware.self) .grouped(session)
接下来我们看看基于session的认证怎么来实现(先上代码:):
//测试认证 auth.get("hello") { (req) -> EventLoopFuture<View> in let user = try req.requireAuthenticated(SKUser.self) let logger = try req.make(Logger.self) logger.debug("\(user)") return try req.view().render("base") } //进行登录激活认证session模型 auth.get("login",Int.parameter) { (req) -> Future<String> in let id = try req.parameters.next(Int.self) return SKUser.find(id, on: req).map({ (user:SKUser?) -> (String) in guard let user = user else{ throw Abort(.badRequest) } try req.authenticate(user) return "Logged in\(user)" }) }
外面我们看看结果: 登录:http://localhost:8080/web/login/1
测试(成功登陆之后我们给出index首页):http://localhost:8080/web/hello
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有