我正在调用一个服务,我需要在每次发出请求时传递用户的永久安全令牌.
为此,我已将此方法添加到我的基本控制器类:
protected UserData getUsr()
{
try
{
UserData usr = new UserData();
usr.SecurityToken = Session["secToken"].ToString();
MembershipUser mvcUser = Membership.GetUser(HttpContext.User.Identity.Name);
usr.Id = (int)mvcUser.ProviderUserKey;
return usr;
}
catch (Exception ex)
{
log.Debug("Could not create usr object", ex);
throw new Exception("Could not authenticate");
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,有时User.Identity数据会超出会话数据,导致用户看到他们登录但随后他们的请求失败会发生奇怪的错误.
有没有更好的方法来存储此令牌/我可以存储它以便它会在User.Identity对象到期时到期吗?
此外,如果有人知道一些很好的基本理解示例/文档HttpContext和MVC授权过滤器将是伟大的.
我一直在关注这个教程,这很棒,并且有一个问题.
http://www.larryullman.com/2010/01/07/custom-authentication-using-the-yii-framework/
我可以在我的应用程序代码中的任何位置访问这样的角色属性:
Yii::app()->user->role
Run Code Online (Sandbox Code Playgroud)
但是,我真正想做的是使用我的UserController中的默认控制器授权:
/**
* Specifies the access control rules.
* This method is used by the 'accessControl' filter.
* @return array access control rules
*/
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('*'),
'users'=>array('@'),
// Fails
'roles'=>array(ModelConstantsRole::ADMIN),
// Also Fails
'expression'=>'(isset(Yii::app()->user->role) && (Yii::app()->user->role==ModelConstantsRole::ADMIN))',
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
Run Code Online (Sandbox Code Playgroud)
看来实际验证accessRules中定义的规则的类实际上并不知道我为其分配的角色.CAccessControlFilter(对于那些不想在40分钟内搜索XD的人).
当我将它与Larry的方法结合起来时,有关如何使用accessRules方法的任何想法?
谢谢!
我可以使用.button()来创建漂亮的提交按钮,但是我页面上的其他元素,最明显的选择框仍然是常规的,丑陋的CSS样式.
有没有办法从我的选择框中劫持Jquery UI Button的CSS样式?
我的个人资料看起来像这样:
profile_id | answer_id
----------------------
1 1
1 4
1 10
Run Code Online (Sandbox Code Playgroud)
我有一个表格,其中包含一些受访者的回复列表,其结构如下:
user_id | answer_id
-------------------
1 1
1 9
2 1
2 4
2 10
3 14
3 29
Run Code Online (Sandbox Code Playgroud)
如何选择在配置文件中提供所有答案的用户列表?在这种情况下只有用户2.