(我说的是纯SS项目,请不要和MVC Razor混淆)
我们如何通过身份验证限制对 SS Razor 视图的访问?
也就是说,我们如何从 SS Razor 中调用用户会话和身份验证代码?
我想做这样的事情:
@inherits ViewPage
@Authenticate(RedirectUrl = "/Login")
<div>Hello @UserSession.UserName</div>
<div>You are in the secured area now</div>
(我说的是纯SS项目,请不要和MVC Razor混淆)
我们如何通过身份验证限制对 SS Razor 视图的访问?
也就是说,我们如何从 SS Razor 中调用用户会话和身份验证代码?
我想做这样的事情:
@inherits ViewPage
@Authenticate(RedirectUrl = "/Login")
<div>Hello @UserSession.UserName</div>
<div>You are in the secured area now</div>
我不知道有任何方法可以直接从 SS Razor 页面执行此操作。然而,当我遇到同样的困境时,我通过创建一个提供页面的服务来解决它。这样,您可以使用该Authorize
属性装饰页面的服务,如果用户未通过身份验证,它将被重定向到登录页面。
[Authorize]
public class MyPageService : IService<MyRequestDTO>
{
public object Execute(MyRequestDTO request)
{
...
return new MyPageViewModel();
}
}
要在 razor 页面中检索当前会话,您可以使用GetSession<T>
.
@{
var currentSession = GetSession<CustomUserSession>();
}
<div>Hello @currentSession.UserName</div>
这样做的另一个优点是您可以获得强类型视图并从服务中为视图提供数据。
@inherits ViewPage<MyPageViewModel>