分类:
.NET Core
我们用identity server4现在访问权限一般都是在某个控制器加上Authorize特性,这样就会访问他的时候跳转到授权中心。
这种方式登录成功后是可以跳转到访问的action上。但是有些时候我想在前台没有登录的时候就提醒用户是否登录,当用户点击是的时候就跳转到授权中心去。
开始想的是用js直接跳转到授权中心去给一个当前页面的Url发现虽然登录成功后能返回但是并没有携带User.Claims数据。
研究了很久发现实现action中转的时候是可以带上自己的参数的,比如你带一个url过去,登录成功后才能够带回来的!
既然登录的时候不好用js直接去跳转到授权中心,因为要传递的参数很多哇,clientid,response_type,scope等等,所以我想就用一个需要登录才能访问的action来做中转
public IActionResult Login(string returnUrl = null) { if (returnUrl == null) { return RedirectToAction("index", "home"); } else { return Redirect(returnUrl); } }
代码很简单,就是接受一个url,然后进行跳转。
需要提醒用户登录的页面直接访问当前项目中的Login方法即可:
当然没有登录的时候下跳转到account/login是不能进行的,它会直接跳转到授权中心,然后登录成功后在跳回来account/login,而且最重要的是,原先带的参数讲过这样跳转一圈后是可以接收到的!所以文章标题的问题就可以被解决了!
不容易哇不容易哇,搜了好久的资料都没有,只能自己慢慢摸索
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739
评价